使用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)
答案 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_bonus
和verbose
的Action类。但我怀疑你的情况有点过分。 (ps。有很多关于编写自定义Action类的SO答案。)
答案 1 :(得分:0)
args = parse_args()
args.verbose = args.verbose or args.verbose_with_bonus
可能已经足够
了