Argparse:如何在其他人面前禁止某些选项 - Python

时间:2016-09-12 21:23:56

标签: python parsing command-line argparse

我有以下实用程序:

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可以为我做这个吗?

1 个答案:

答案 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子系统中完整编程语言的全部通用性。