我如何告诉 argparse 只允许参数一次?
How do I tell argparse to allow an argument only once?
如何告诉 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
.[=19= 的频率]
有一个 required
选项强制用户提供参数(至少一次),但我正在寻找限制参数使用频率的上限,而不是下限.
我看过 Only one command line argument with 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)
如何告诉 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
.[=19= 的频率]
有一个 required
选项强制用户提供参数(至少一次),但我正在寻找限制参数使用频率的上限,而不是下限.
我看过 Only one command line argument with 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)