Mar*_*lla 5 python python-2.7 argparse
我正在使用argparse管理命令行选项,我想管理两个选项,--check和--nocheck.我实际上在做这样的事情mybadscript.py:
[...]
args = parser.parse_args()
if args.check:
check = True
if args.nocheck:
check = False
[...]
Run Code Online (Sandbox Code Playgroud)
问题是如果以这种方式启动脚本:
python mybadscript.py --nocheck --check
check将被设置为False.这是不正确的,因为最后一个选项是--check.
我该如何正确管理它们?
PS:我知道你只需要一个选项就可以轻松避免它,但我知道如何管理选项优先级argparse,因为你可以在更复杂的场景中遇到它.
PPS:建议的答案偶然回答了我的问题,但相关问题并不相同.
请参阅argparse文档.这是你可能想要的一个例子.我已经包含了一些您可能不需要的选项 - 我认为这比将它们关闭并且需要它们更好.
>>> parser = argparse.ArgumentParser()
>>> group = parser.add_mutually_exclusive_group(required=True)
>>> group.add_argument('--check', action='store_true', dest="check")
>>> group.add_argument('--nocheck', action='store_false', dest="check")
>>> parser.parse_args(["--check"])
Namespace(check=True)
>>> parser.parse_args(["--nocheck"])
Namespace(check=False)
Run Code Online (Sandbox Code Playgroud)
您可能不希望相互排斥的部分内容删除第二行并替换group为parser.如果您这样做,您可能希望添加以下行:
>>> parser.set_defaults(check=False)
Run Code Online (Sandbox Code Playgroud)