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

问题描述 投票:0回答:2

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

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

python argparse
2个回答
29
投票

argparse
允许您使用
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
投票

已经使用上面提到的

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!")
© www.soinside.com 2019 - 2024. All rights reserved.