如何限制我的python脚本只接受一个参数? (argparse)

时间:2012-11-09 14:37:16

标签: python argparse

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

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'这是可能的,我将如何实现它?

2 个答案:

答案 0 :(得分:14)

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()

答案 1 :(得分: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!")