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

它打印

出:3

但我宁愿错误地告诉用户该--out参数只能使用一次。

我查看了该nargs选项,但这表示应该考虑以下多少个参数--out,而不是我可以通过--out.

有一个required选项可以强制用户提供参数(至少一次),但我正在寻找限制参数使用频率的上限,而不是下限。

我只见过一个带有 argparse 的命令行参数,但这是从 2013 年开始的,我希望现在有一种更简单的方法来做到这一点。

如何限制命令行标志的使用次数?

鲁弗斯VS

跟进我的评论:

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)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何一次只允许一个会话访问Spring REST Web服务?

如何一次只允许选中一个复选框?

GitLab Runner-如何一次只允许一个管道运行

如何一次只允许一个SKSpriteNode实例出现在屏幕上?

如何一次只允许打开一个扩展垫面板?

如何确保一次只允许一个Azure Functions事件网格触发器实例运行?

如何一次只允许一个人使用不和谐机器人

请告诉我为什么这个对象迭代器只允许记录一次

如何告诉TypeScript在一个传播参数中允许一个列表中的多个字符串仅每个一次?

如何只允许一个点?

django inlineformset,如何一次只允许1个布尔字段为true?

Rails:如何只允许用户一次申请工作?

如何只允许一次将数组推入数组?

我们可以允许用户一次仅在SSRS中选择一个参数吗?

带有argparse的Python中的一个参数如何有可变数量的参数?

如何将一个参数传递给argparse,这将影响两个选项?

我如何只允许用户提交一次html表单?

我如何使用argparse指定一个可选的非布尔参数而没有默认值?

如何做一个python argparse相互必需的参数组

如何使用argparse在Cmd2中仅自动完成一个参数

如何只允许打开继承窗口的一个实例?

如何只允许一个用户查看“ UpdateView”?

如何只允许一个活动的@Async Task?

如何只允许检查一个单选按钮?

如何只允许一个活动的useState

如何每个用户只允许一个活动会话

如何只允许一次在JTable中选择一行?

argparse:如何使互斥参数可选?

谁能告诉我如何一次在Java中删除两个元素?