我使用argparse
来管理命令行选项,我想要管理两个选项,--check
和{mybadscript.py
中做了类似的事情:
[...]
args = parser.parse_args()
if args.check:
check = True
if args.nocheck:
check = False
[...]
问题是,如果以这种方式启动脚本:
python mybadscript.py --nocheck --check
check
将被设置为False
。这是不正确的,因为最后一个选项是--check
。在
如何正确管理它们?在
PS:我知道您只使用一个选项就可以很容易地避免它,但是我知道如何使用argparse
来管理选项优先级,因为您可以在更复杂的场景中遇到它。在
PPS:建议的答案只是顺便回答了我的问题,但相关的问题不是同一个问题。在
参见argparse documentation。下面是一个你可能想要的例子。我列出了几个你可能不需要的选择——我认为这比不去做而你需要它们要好。在
在这种情况下,您可能不希望互斥部分删除第二行并将
^{pr2}$group
替换为parser
。如果您这样做,您可能希望添加以下行:有两个参数分别设置两个不同的名称空间属性}。使用
args.check
和{nocheck check
输入行,两者都被设置。在在:
最后测试
nocheck
,这样就可以覆盖check
。在argparse
尝试以与顺序无关的方式处理选项(标记的参数)。在如果他们写的是同一个“dest”,这是你最后看到的最后一个。查看输入内容和顺序的一种方法是使用“append”操作:
^{pr2}$我可以设置默认值[]
^{3}$另一个答案中配对的“store_true”和“store_false”更简单。在
更好的是,选择一个作为默认选择,并为另一个提供一个选项。只要默认值是明确的,就不需要同时使用这两个参数。在
相关问题 更多 >
编程相关推荐