pythonスクリプトに引数が渡されない場合、どのようにヘルプ情報を出力しますか?
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
私が欠けているのはif arg == ""
表現方法がわからない:(
if len(sys.argv) == 1:
# Print usage...
Sys.argvの最初の要素は、常にスクリプト自体の名前または空の文字列です。 sys.argvに要素が1つしかない場合は、引数がなかったはずです。
if len(sys.argv)<2:
プログラムの名前は常にsys.argv [0]にあります
他の人が言ったように、次のようにして引数が渡されたかどうかを確認できます:
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
ただし、Pythonモジュール OptParse と呼ばれるモジュール)があり、スクリプトを実行するときにコマンドライン引数を解析するために明示的に開発されました。より多くの「標準準拠」(これは、Pythonコミュニティ)内でコマンドラインを解析するために期待され、受け入れられている方法です)。
以下は、問題を解決するための非常にPython的な方法です。
import sys
try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
Lib optparse [1]を使用することをお勧めします。よりエレガントです:D
[1]より強力なコマンドラインオプションパーサー< http://docs.python.org/library/optparse.html >
ノクティススカイタワーの回答に基づく
import sys
args = sys.argv[1:]
for arg in args:
if arg == "do":
# do this
if not args:
print "usage is bla bla bla"
import argparse
def parse_args():
parser = argparse.ArgumentParser(
add_help=True,
)
# your arguments here
if len(sys.argv) == 1:
parser.print_help()
sys.exit(0)
else:
options = parser.parse_args()
return options