web-dev-qa-db-ja.com

Pythonには引数引数がありますか?

同じプログラム(テキストファイルを開いて内容を表示する)を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*)
68
Dan1676

pythonリストはその長さを知っているので、len(sys.argv)を実行するだけでargvの要素数を取得できます。

109
sepp2k

私はよくコマンドラインから固定数の引数を読み取るためにquick-n-dirtyトリックを使用します。

[filename] = sys.argv[1:]

in_file = open(filename)   # Don't need the "r"

これにより、1つの引数がfilenameに割り当てられ、引数が1つだけでない場合は例外が発生します。

16
Marcelo Cantos

引数の解析のためにargparseを見ることをお勧めします。

http://docs.python.org/dev/library/argparse.html

簡単にできるので、重い物を持ち上げる必要はありません。

8
Nickle

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。

0
Cees Timmerman