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 == ""
、表現方法がわからない行です:(
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"
ただし、スクリプトの実行時にコマンドライン引数を解析するために明示的に開発されたargparseまたはOptParse (現在は非推奨)と呼ばれるPythonモジュールがあります。これはもう少し「標準に準拠」しているので、これを調べることをお勧めします(これは、Pythonコミュニティ内で期待され受け入れられているコマンドライン解析の方法です)。
以下は、try .. except 内で意図的に例外を生成するため、問題を解決するための非常に Pythonic な方法です。
import sys
try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()
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
#!/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"
Noctis Skytowerの回答に基づく
import sys
args = sys.argv[1:]
for arg in args:
if arg == "do":
# do this
if not args:
print "usage is bla bla bla"
lib optparse [1] を使用することをお勧めします。これはよりエレガントです :D
[1] より強力なコマンド ライン オプション パーサー < http://docs.python.org/library/optparse.html >