我有以下实用程序:
import argparse
parser = argparse.ArgumentParser(description='Do some action.')
parser.add_argument('--foo', '--fo', type=int, default=-1, help='do something foo')
parser.add_argument('--bar', '--br', type=int, default=-1, help='do something bar')
parser.add_argument('--baz', '--bz', type=int, default=-1, help='do something baz')
parser.add_argument('--bat', '--bt', type=int, default=-1, help='do something bat')
但是,如果使用--foo
选项,则应禁止--bat
选项,相反,--bat
选项仅应在--bar
和{{}时使用1}}存在。如何使用--baz
完成该操作?当然,我可以添加一堆argparse
块来检查,但是有一些内置的if / else
可以为我做这个吗?
答案 0 :(得分:1)
您可以使用parser.add_mutually_exclusive_group
创建互斥的选项组:
group = parser.add_mutually_exclusive_group()
group.add_argument('--foo', '--fo', type=int, default=-1, help='do something foo')
group.add_argument('--bat', '--bt', type=int, default=-1, help='do something bat')
,但对于更复杂的依赖关系图(例如,--bat
需要--bar
和--baz
),argparse
不提供任何特定支持。这在inner-platform effect的方向上走得太远,试图重建argparse
子系统中完整编程语言的全部通用性。