gpt4 book ai didi

Python 参数解析 : Mutually exclusive group with some compatible arguments

转载 作者:太空狗 更新时间:2023-10-29 17:08:44 29 4
gpt4 key购买 nike

我想在 argparse 中实现这样的逻辑:

If argument A is selected, the user cannot select arguments B or C.
B and C can both be selected

看起来像add_mutually_exclusive_group这是我想要的,但看起来你只能从一个相互排斥的组中选择一个选项,所以我不能把所有三个都放在一个相互排斥的组中。

有没有办法在 argparse 中做到这一点?

最佳答案

你不能用 argparse 真正做到这一点,但是你可以在 argparse 运行后做到这一点。

这是一个例子:

parser = argparse.ArgumentParser()

# group 1
parser.add_argument("-q", "--query", help="query", required=False)
parser.add_argument("-f", "--fields", help="field names", required=False)

# group 2
parser.add_argument("-a", "--aggregation", help="aggregation",
required=False)

我在这里使用提供给命令行包装器的选项来查询 mongodb。 collection 实例可以使用可选参数 query 调用方法 aggregate 或方法 find fields,因此你明白为什么前两个参数兼容而最后一个不兼容。

现在我运行 parser.parse_args() 并检查它的内容:

args = parser().parse_args()

print args.aggregation
if args.aggregation and (args.query or args.fields):
print "-a and -q|-f are mutually exclusive ..."
sys.exit(2)

当然,这个小 hack 只适用于简单的情况,如果您有许多互斥的选项和组,检查所有可能的选项将成为一场噩梦。在那种情况下,您应该将您的选项分解为命令组。为此,您应该遵循此处的建议 Python argparse mutual exclusive group .

关于Python 参数解析 : Mutually exclusive group with some compatible arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13919341/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com