2011-11-20 13 views
37
parser.add_argument('-auto', action='store_true') 

-autoが指定されていない場合、どのようにしてfalseを格納できますか?私はかすか指定されていない場合、argparse store false

import argparse 
parser=argparse.ArgumentParser() 
parser.add_argument('-auto', action='store_true',) 
args=parser.parse_args() 
print(args) 

では、不特定

答えて

63

store_trueオプションでは、デフォルト値が自動的に作成されます。偽

同様に、store_falseは、コマンドライン引数がない場合、デフォルトでTrueになります。

この動作のためのソースは簡潔かつ明確である:http://hg.python.org/cpython/file/2.7/Lib/argparse.py#l861

argparseドキュメントは、件名に明確ではないので、私は今、それらを更新します:http://hg.python.org/cpython/rev/49677cc6d83a

+1

これに関するコメントのカップル。まず、オプションが '-bar'であれば、' dest'はhttp://hg.python.org/cpython/rev/49677cc6d83aに基づいて自動的に 'bar'に設定されているようです。しかし、このデフォルト動作がコード内でどこに設定されているのか分かりません。私は常に 'dest'引数を明示的に設定しました。また、 '--bar'が' store_false'なら、 'bar'を' --bar'オプションの 'dest 'にデフォルト設定させることは本当に意味をなさないと思います。この場合、 'dest'は' notbar'であってはなりませんか? –

5

% test.py 

利回り

Namespace(auto=False) 

を実行している場合は、この方法は、それがNoneを格納しないので、それはデフォルトでFalseを格納するように表示されていることを覚えています。

-1

store_falseは実際により0にデフォルト設定されますデフォルト(検証するためにテストすることができます)。デフォルトに変更するには、宣言にdefault=Trueを追加してください。したがって、この場合の

parser.add_argument('-auto', action='store_true', default=True)

+0

これは、Python 2.7と3.4の場合には当てはまりません: '' 'parser.add_argument( ' - bar'、action = 'store_false')' '_StoreFalseAction(option_strings = [' - bar '、' = '、' = '、' = '、' = '、' = '、' = ' ' '名前空間(bar = True) ' – Leynos

+1

申し訳ありませんが、実際はoptparseのデフォルトの動作です。 argparseは、デフォルトでストアの逆にする必要があります。すなわち、 'store_false'のデフォルトは 'True'である。 –

関連する問題