web-dev-qa-db-ja.com

python空の引数

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

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

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

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

21
Josh Wright
if len(sys.argv)<2:

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

13
AJ.

他の人が言ったように、次のようにして引数が渡されたかどうかを確認できます:

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

6
Mike Trpcic

以下は、問題を解決するための非常にPython的な方法です。

import sys

try:   
   sys.argv[1:] // do something with sys.argv[1:]  
except IndexError:  
   print "usage is..."
   sys.exit()
4
bogna.ka
#!/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"
1
Noctis Skytower

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"
1
John La Rooy
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
0
dragon