同じプログラム(テキストファイルを開いて内容を表示する)をCとC++で作成しました。現在、同じことをPython(Linuxマシン上)で行っています。
Cプログラムでは、次のコードを使用しました。
if (argc != 2) {
/* exit program */
}
質問:Python引数の数を確認するために使用されるもの
#!/usr/bin/python
import sys
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("ERROR. Did you make a mistake in the spelling")
text = in_file.read()
print text
in_file.close()
現在の出力:
./python names.txt = Displays text file (correct)
./python nam = error message: stated from the sys.ext line (correct)
./python = error message: stated from the sys.ext line (wrong: want it to be a
separate error message stating *no file name input*)
pythonリストはその長さを知っているので、len(sys.argv)
を実行するだけでargv
の要素数を取得できます。
私はよくコマンドラインから固定数の引数を読み取るためにquick-n-dirtyトリックを使用します。
[filename] = sys.argv[1:]
in_file = open(filename) # Don't need the "r"
これにより、1つの引数がfilename
に割り当てられ、引数が1つだけでない場合は例外が発生します。
引数の解析のためにargparseを見ることをお勧めします。
http://docs.python.org/dev/library/argparse.html
簡単にできるので、重い物を持ち上げる必要はありません。
dir(sys)
はノーと言います。 len(sys.argv)
は機能しますが、Pythonでは許可よりも許しを求めるほうがよいため、
_#!/usr/bin/python
import sys
try:
in_file = open(sys.argv[1], "r")
except:
sys.exit("ERROR. Can't read supplied filename.")
text = in_file.read()
print(text)
in_file.close()
_
正常に動作し、短くなります。
とにかく終了する場合、これはより良いでしょう:
_#!/usr/bin/python
import sys
text = open(sys.argv[1], "r").read()
print(text)
_
私はprint()
を使用しているため、Python 3。