让 python arg 将另一个标志设置为 true 除了自身

Having a python arg set another flag as true in addition to itself

使用 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) 
args = parse_args()
args.verbose = args.verbose or args.verbose_with_bonus

可能还不错

尤其是 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 视为 verbose_with_bonus。

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