需要 python argparse add_argument_group

MMM*_*MMM 3 argparse python-3.x

在这个问题

argparse:需要两个参数之一

我找到了我想要的解决方案的参考,但这是不对的。

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

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

rds,

hpa*_*ulj 5

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')
Run Code Online (Sandbox Code Playgroud)

什么是有意义的用法行? 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)
Run Code Online (Sandbox Code Playgroud)