2012-02-07 7 views
68

Pythonでは、int引数とstr引数をスクリプトに追加する方法を理解しています。スクリプトのブール引数

parser=argparse.ArgumentParser(description="""Mydescription""") 
parser.add_argument('-l', type=str, default='info', help='String argument') 
parser.add_argument('-dt', type=int, default ='', help='int argument') 

ブーリアンとは何ですか?

基本的には、スクリプトに特定のアクションを行うかどうかを示すフラグを渡したいと思います。

+2

と同じdest値、action='store_false'と1 --no-option、および1 --optionとの相互に排他的な引数を吸うました最近でも、私はしばらくの間、これを行っていない、と私は考えます'? –

+0

ブーリアンでどのような動作が必要ですか? (例えば、 '-v true'と '-v false'?) – kennytm

答えて

133

actionにはstore_trueを使用できます。 store_falseを使用するか、intを使用して暗黙のキャストにブール値をチェックさせることができます。

actionを使用すると、--foo=true--foo=false引数を渡すことはありません。それがtrueに設定されている場合は、それを含めるだけです。実際に

python myProgram.py --foo 

私はあなたが望むかもしれないものだと思い

parser.add_argument('-b', action='store_true', default=False) 
+0

これは完璧です。ありがとう。 – dublintech

+6

'default = False'が必要ではないと思います。 –

+19

@PaulDraper:明示的は暗黙的より優れています。 – sberry

15
parser.add_argument('--foo', action='store_true') 
2
import distutils.util 
ARGP.add_argument('--on', '-o', type=distutils.util.strtobool, default='true') 

例がそれを呼び出すです:

$ ./myscript    # argp.on = 1 
$ ./myscript --on=false  # argp.on = 0 
$ ./myscript --on=False  # argp.on = 0 
$ ./myscript --on=0   # argp.on = 0 
$ ./myscript --on=1   # argp.on = 1 
$ ./myscript -o0   # argp.on = 0 
$ ./myscript -o false  # argp.on == 0 

を私は言及する必要があり、あなたは地元のラッパーに引数をバインドすることができます"yes"や "no"のような値をサポートしたい場合は、他の正確な文字列のマッチングを処理するためにも使用します。 yes/noも処理できるyamlとして入力を解釈することもできます。私は `アクション= 'store_trueとと間違って何action='store_true'

関連する問題