有一个python arg除了它自己之外还设置另一个标志为true

时间:2015-07-27 16:47:22

标签: python arguments argparse

使用arg解析,我有两个参数。我希望第二个自动使第一个为真,即使第一个没有被调用。有没有办法做到这一点?

我想要的基本要点:

parser.add_argument('--verbose', action='store_true')
parser.add_argument('--verbose-with-bonus', action='store_true')

parser.parse_args('--verbose-with-bonus'.split())
Namespace(verbose=True, verbose_with_bonus=True) 

2 个答案:

答案 0 :(得分:2)

特别是使用store_true参数,解析后很容易实现自己的检查,例如

 if args.verbose_with_bonus:
     args.verbose = True

 if args.verbose_with_bonus and not args.verbose:
     parser.error('naughty user')

文档讨论了'count'参数类型:

'count' - This counts the number of times a keyword argument occurs. For example, this is useful for increasing verbosity levels:

>>>
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--verbose', '-v', action='count')
>>> parser.parse_args('-vvv'.split())
Namespace(verbose=3)

因此,您可以将verbose=1视为简单详细信息,将verbose=2视为详细信息。

也可以创建自定义Action类,例如,可以同时设置verbose_with_bonusverbose的Action类。但我怀疑你的情况有点过分。 (ps。有很多关于编写自定义Action类的SO答案。)

答案 1 :(得分:0)

args = parse_args()
args.verbose = args.verbose or args.verbose_with_bonus

可能已经足够