19

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 == ""、表現方法がわからない行です:(

4

8 に答える 8

26
if len(sys.argv) == 1:
    # Print usage...

sys.argv の最初の要素は、常にスクリプト自体の名前か空の文字列です。sys.argv に要素が 1 つしかない場合は、引数がないはずです。

http://docs.python.org/library/sys.html#sys.argv

于 2010-02-03T18:02:36.097 に答える
15
if len(sys.argv)<2:

プログラムの名前は常に sys.argv[0] にあります

于 2010-02-03T18:00:47.987 に答える
6

次の手順を実行して、引数が渡されたかどうかを確認できます。

#!/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コミュニティ内で期待され受け入れられているコマンドライン解析の方法です)。

于 2010-02-03T20:43:55.820 に答える
5

以下は、try .. except 内で意図的に例外を生成するため、問題を解決するための非常に Pythonic な方法です。

import sys

try:   
   sys.argv[1:] // do something with sys.argv[1:]  
except IndexError:  
   print "usage is..."
   sys.exit()
于 2012-07-16T19:39:41.390 に答える
2
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
于 2015-08-06T11:30:03.900 に答える
1
#!/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"
于 2010-02-03T18:03:01.893 に答える
1

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"
于 2010-02-03T19:43:41.463 に答える
1

lib optparse [1] を使用することをお勧めします。これはよりエレガントです :D

[1] より強力なコマンド ライン オプション パーサー < http://docs.python.org/library/optparse.html >

于 2010-02-04T02:10:19.400 に答える