我有2个参数组-a -b
和-c -d -e
。我想确保它们是互斥的,例如:不允许使用-a -c
或-b -e
,但是允许使用-a -b
和-c -e
。
我尝试了类似的方法,但是它不起作用:
mutex_group_of_groups = parser.add_mutually_exclusive_group(
required=True
)
mutex_group_of_groups.add_argument(
'--top1',
type=str,
)
mutex_group_of_groups.add_argument(
'--top2',
type=str,
)
g1_in_mutex_group = mutex_group_of_groups.add_argument_group('g1')
g1_in_mutex_group.add_argument(
'-a', '--g1a',
type=str,
)
g1_in_mutex_group.add_argument(
'-b',
type=str,
nargs="?",
)
g2_in_mutex_group = mutex_group_of_groups.add_argument_group('g2')
g2_in_mutex_group.add_argument(
'-c',
type=str,
)
g2_in_mutex_group.add_argument(
'-d',
type=str,
)
g2_in_mutex_group.add_argument(
'-e',
type=str,
)
这里只有top1和top2是互斥的。
我知道我可以使用子解析器将这两个组变成2个子命令。但是我想要一个不创建子命令的简单解决方案。