我正在写一个程序,在其中我想有这样的论点:
--[no-]foo Do (or do not) foo. Default is do.
有没有办法让argparse帮我做这件事?
2012年我在这里使用Python.
事实证明,在Python3.9版本的argparse
中添加了BooleanOptionalAction
,解决了这个问题,我已经将我接受的答案更改为新的答案.但是,如果您仍在使用Python 3.9之前的版本,本页上的其他答案应该会有所帮助.
我正在写一个程序,在其中我想有这样的论点:
--[no-]foo Do (or do not) foo. Default is do.
有没有办法让argparse帮我做这件事?
2012年我在这里使用Python.
事实证明,在Python3.9版本的argparse
中添加了BooleanOptionalAction
,解决了这个问题,我已经将我接受的答案更改为新的答案.但是,如果您仍在使用Python 3.9之前的版本,本页上的其他答案应该会有所帮助.
v3.9增加了一个action
类来实现这一点.从the docs开始(接近action
段末尾)
BooleanOptionalAction
在argparse
中提供,并增加了对布尔操作的支持,例如--foo
和--no-foo
:>>> import argparse >>> parser = argparse.ArgumentParser() >>> parser.add_argument('--foo', action=argparse.BooleanOptionalAction) >>> parser.parse_args(['--no-foo']) Namespace(foo=False)