2

我想在 argparse 中创建以下情况。

--bar如果为真,则必须--foo为真。

parser.add_argument('--foo', action='store_true', default=False)
parser.add_argument('--bar', action='store_true', default=False)

那么:

% my_prog   => args.foo is False, args.bar is False
% my_prog --bar => args.foo is False. args.bar is True
% my_prog --foo => args.foo is True, args.bar is True

我可以在 argparse 中执行此操作,还是需要进行相应的测试args.foo和设置args.bar?这似乎不对。我认为有一种方法可以将参数与可以进行检查的函数相关联。

4

2 回答 2

1

我认为 argparse 没有办法做到这一点,但你可以在一行中做到这一点:

args.bar |= args.foo
于 2019-12-26T20:29:00.550 回答
0

解析后这样做是有道理的。我的意思是它并不是解析本身的一部分。您只需在帮助文本和代码中编写类似“--foo 暗示--bar”的内容,

if args.foo:
    args.bar = True
于 2019-12-26T20:30:33.077 回答