2014-12-02 74 views
2

在这个问题上蟒蛇argparse add_argument_group需要

argparse:或者需要两个参数

我找到我想要的解决方案的参考,但它是不正确的。

我需要2的至少1选项存在,选项1,选项2或两者...

的add_argument_group函数不具有必需的参数。 add_mutually_exclusive函数有它,但它迫使我在2个选项之间进行选择,这不是我想要的。

RDS,

回答

0

argument_group只是控制帮助显示。它不会影响解析或检查错误。 mutually_exclusive_group影响使用情况显示和发生的测试,但正如您所注意到的,其逻辑不是您想要的。

有一个Python错误问题,要求某种形式的嵌套'包容性'组。但是允许嵌套和所有版本和/或/异或逻辑的一般形式并不是一个简单的补充。

我认为你最简单的解决方案是在解析后测试args。如果错误的组合错误,则引发错误。

假设两个参数的默认值是None

if args.option1 is None and args.option2 is None: 
    parser.error('at least one of option1 and option2 is required') 

什么是有意义的使用习惯? required mutually exclusive' uses(OPT1 | OPT2).(OPT1 & OPT2)might indicate that both are required. Your case is a非排他性或`

usage: PROG [-h] (--opt1 OPT1 ? --opt2 OPT2)