- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个这样工作的程序:
prog.py filename -r
使用我给定的默认默认值
prog.py filename -r 0 500 20
使用 0、500 和 20
我已经成功地使用了:
class RdistAction(argparse.Action):
def __call__(self,parser,namespace,values,option_string=None):
if not values:
setattr(namespace,self.dest,[0, 1000, 50])
else:
setattr(namespace,self.dest,values)
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--rdist", action=RdistAction, nargs='*', type=int)
args = parser.parse_args()
但我想固执己见,因为我最初的目标是将 nargs 设置为 3。但是当我在上面的代码中使用 nargs=3 时,我收到一条错误消息,指出需要 3 个参数。
我四处搜索,根据直觉,我必须添加 def __init__
并修改该函数中的某些内容。是否有可能在 nargs='*'
时获得与上述代码相同的结果,但使用 nargs=3
代替?
最佳答案
如果我将您的 add_argument
行更改为 nargs='3'
,我想我得到了您正在处理的错误:
Traceback (most recent call last):
File "python", line 12, in <module>
ValueError: length of metavar tuple does not match nargs
如果我设置 nargs=3
(不带引号),那么它对我有用:
import argparse
class RdistAction(argparse.Action):
def __call__(self,parser,namespace,values,option_string=None):
if not values:
setattr(namespace,self.dest,[0, 1000, 50])
else:
setattr(namespace,self.dest,values)
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--rdist", action=RdistAction, nargs=3, type=int)
print parser.parse_args('-r 0 500 20'.split())
给予
Namespace(rdist=[0, 500, 20])
这就是你要找的吗?
这里的技巧是,如果 nargs 不是特殊字符之一('?'、'*'、'+' 等),那么它必须是整数,而不是字符串。
请注意 the documentation确实指出了这一点。
关于Python - 规避 argparse nargs 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43044166/
我正在使用 argparse 将几个位置参数解析为 input然后是几个位置参数 output .由于参数数量不受限制,我尝试使用 --作为分隔符。我通常使用 -- 取得成功分隔符使用 nargs=a
This question already has answers here: Comma separated inputs instead of space separated inputs for
通常我有这样的争论: parser.add_argument( "--distances", nargs="+", type=int, default=[1, 2, 3
我想在 python argparse 中使用文件参数,文件中的行如下所示: --contour_levels=-4 -2 0 2 4 或: --contour_levels -4 -2 0 2 4
似乎将元组设置为位置参数的 metavar 并请求帮助不起作用: import argparse parser = argparse.ArgumentParser() parser.add_argum
这是我的解析器配置的一部分 parser.add_argument( 'infile', help="The file to be imported", type=argparse.F
我有一个使用 argparse 的程序。它需要 1 个必需的位置参数、1 个可选的位置参数和 1 个标志参数。 类似于: usage: test.py [-h] [-a A] b [c] 所以,我尝试
我有一个合并多个视频和音频文件的脚本。现在我有一个允许四个值的参数: # -A FILENAME LANGUAGE POSITION SPEED $ script.py [... more param
我正在尝试创建一个类似的命令 prog [-h] [-i ID [ID ...]] | -x [SOMETHING] {cmd1,cmd2,cmd3}... 所以基本上在顶层我有一个解析器,
所以我正在尝试创建一个解析器,它可以接受任意的选择列表(要绘制的东西),并为每个选择指定可选参数。并避开了子子解析器的想法,只使用以下形式的多个参数: --plot foo --xlim 0 10 -
我正在使用 argparse 接受选项,其中一个是列表: parser.add_argument('-S', '--size', help='Number of results to show', d
我正在尝试创建一个带有两个参数的选项。第一个参数应通过选择进行验证,但第二个参数是任意用户提供的值。例如。 > app -h usage: app [--option {count,label} ar
如何使用带有变量 nargs 的 argparse 进行条件循环?所以,基本上,它应该在有或没有参数的情况下运行。我正在尝试: parser = argparse.ArgumentParser(des
我有一个这样工作的程序: prog.py filename -r 使用我给定的默认默认值 prog.py filename -r 0 500 20 使用 0、500 和 20 我已经成功地使用了: c
对于 Click 中的可选参数,是否有与 argparse 的 nargs='*' 功能等效的功能? 我正在编写命令行脚本,其中一个选项需要能够接受无限数量的参数,例如: foo --users al
我正在尝试编写一个函数 wo,您可以通过 argparse 解析可变数量的参数 - 我知道我可以通过 nargs="+" 来做到这一点。遗憾的是,argparse 帮助的工作方式(以及人们通常在 CL
我就废话不多说了,大家还是直接看代码吧~ ? 1
我正在使用命令行实用程序来满足我的项目的一项要求:optparse。 假设我使用如下所示的 add_option 实用程序: parser.add_option('-c','--categories'
以下是我要实现的目标的简短摘要: 获取一个或多个(表格)文件 寻找一个特定的字符串键(目前只有一个键,但我可以想象扩展它以接受多个键) 匹配键的行,提取给定位置或位置范围内的字符。 因此,在理想情况下
这是我的 argparse 示例 sample.py import argparse parser = argparse.ArgumentParser() parser.add_argument("-
我是一名优秀的程序员,十分优秀!