如何告诉argparse我只允许一次命令行参数?
import sys
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
"--out",
required=True,
)
parsed = parser.parse_args(sys.argv[1:])
print(f"out: {parsed.out}")
如果我这样称呼这个代码:
python3 argparsetest.py --out 1 --out 2 --out 3
它打印
out:3
但我宁愿它出错,告诉用户--out
参数只能使用一次。
我查看了nargs
选项,但它说明了--out
应该考虑多少以下参数,而不是我可以传递--out
的频率。
有一个required
选项可以强制用户提供参数(至少一次(,但我希望限制参数的使用频率上限,而不是下限。
我只看到过一个带有argparse的命令行参数,但这是2013年的,我希望现在有一种更简单的方法可以做到这一点。
如何限制命令行标志的使用次数?
跟进我的评论:
import sys
import argparse
# args = sys.argv[1:]
args = "--out 1 --out 2 --out 3".split()
print(f"Input args: {args}")
parser = argparse.ArgumentParser()
parser.add_argument(
"--out",
action="append",
required=True,
)
parsed = vars(parser.parse_args(args))
for key, val in parsed.items():
if isinstance(val, list):
print(f"{key} specified {len(val)} times!")
parsed[key] = val[0] # or val[-1]
print(parsed)