12

我想要一个具有(例如)三个参数的脚本:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--a",help="Argument a")
parser.add_argument("--b",help="Argument b")
parser.add_argument("--c",help="Argument c")
args= parser.parse_args()

但是让它在任何给定时间只能指定'a','b'或'c',例如你可以指定'a'但不能指定'b'或'c'这是否可能以及如何我会实现它吗?

4

2 回答 2

22

argpase 允许您使用该add_mutually_exclusive_group()方法指定它。

import argparse
parser = argparse.ArgumentParser()
g = parser.add_mutually_exclusive_group()
g.add_argument("--a",help="Argument a")
g.add_argument("--b",help="Argument b")
g.add_argument("--c",help="Argument c")
args= parser.parse_args()
于 2012-11-09T14:40:35.207 回答
1

使用add_mutually_exclusive_group()上面提到的argparse已经在级别上检查了这一点。

如果您希望对错误消息等有更多控制权,您当然可以稍后查看结果:

if len([x for x in args.a, args.b, args.c if x is not None]) > 1:
  raise Exception("Not allowed!")
于 2012-11-09T14:45:03.323 回答