私はPythonプログラムに柔軟なコマンドライン引数を受け入れるためにargparseモジュールを使用しようとしています。単純なブール値のフラグを渡して、True
またはFalse
と言って、自分のコードで適切な分岐を実行したいと思います。argparseがブール値フラグを正しく解析しないのはなぜですか?
以下を考慮してください。
import argparse
parser = argparse.ArgumentParser(prog='test.py',formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-boolflag', type=bool, default=True)
parser.add_argument('-intflag' , type=int, default=3)
args = parser.parse_args()
boolflag = args.boolflag
intflag = args.intflag
print ("Bool Flag is ", boolflag)
print ("Int Flag is ", intflag)
私はpython scrap.py -boolflag False -intflag 314
でそれを実行しようとしたとき、私は
Bool Flag is True
Int Flag is 314
これはなぜですか?結果を得ました! intフラグは正しく解析されているように見えますが、ブール値フラグは、False
になるようにコマンドライン引数で明示的に言及しても、常にTrue
として解析されます。
どこが間違っていますか?
'action = 'store_false'' [自動的にデフォルトをTrueに設定](https://stackoverflow.com/q/8203622/2201041) – JETM
@JETM:gah、yes 、 もちろん。 –