如何告诉argparse只允许一个参数出现一次



如何告诉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)

相关内容

  • 没有找到相关文章

最新更新