我试图将两个包含整数的列表作为参数传递给python代码。但是sys.argv[i]
将参数作为字符串列表获取。
输入看起来像
$ python filename.py [2,3,4,5] [1,2,3,4]
我发现以下黑客可以转换列表。
strA = sys.argv[1].replace('[', ' ').replace(']', ' ').replace(',', ' ').split()
strB = sys.argv[2].replace('[', ' ').replace(']', ' ').replace(',', ' ').split()
A = [float(i) for i in strA]
B = [float (i) for i in strB]
有一个更好的方法吗?
命令行参数始终以字符串形式传递。您将需要自己将它们解析为所需的数据类型。
>>> input = "[2,3,4,5]"
>>> map(float, input.strip('[]').split(','))
[2.0, 3.0, 4.0, 5.0]
>>> A = map(float, input.strip('[]').split(','))
>>> print(A, type(A))
([2.0, 3.0, 4.0, 5.0], <type 'list'>)
有像argparse和click这样的库,可以让您定义自己的参数类型转换,但argparse
将"[2,3,4]"
其视为相同,[
2
,
3
,
4
]
因此我怀疑它是否有用。
编辑Jan 2019 这个答案似乎仍然有一些行动,所以我将直接从argparse文档中添加另一个选项。
您可以action=append
用来允许将重复的参数收集到一个列表中。
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='append')
>>> parser.parse_args('--foo 1 --foo 2'.split())
Namespace(foo=['1', '2'])
在这种情况下,您将为--foo ?
每个列表项传递一次。使用OP示例:python filename.py --foo 2 --foo 3 --foo 4 --foo 5
将导致foo=[2,3,4,5]
问题内容: 我正在尝试使用argh库将参数列表传递给python脚本。可以接受类似以下内容的输入: 我的内部代码如下所示: 这是它的行为方式: 这个问题看起来非常简单:argh仅接受第一个参数,并将其视为字符串。如何使它“期望”一个整数列表? 我看到这是如何在optparse中完成的,但是(未弃用的)argparse呢?还是使用argh更好的修饰语法?这些似乎更pythonic。 问题答案: 使用
问题内容: 我正在使用getopt处理命令行可选参数,该参数应接受列表。像这样: 但这会修剪“ [1,”之后的所有内容 我的问题是:A)有没有一种方法可以指定列表而不将其转换为字符串?(使用getopt) B)如果我要将列表转换成字符串,如何将这个列表转换成字符串?例如像mylist.split(“?”)这样的东西可以消除方括号?有没有更好的办法? 谢谢 问题答案: 我可以想到两种选择: 使用op
问题内容: 我想将命令的每个输出作为多个参数传递给第二个命令,例如: 返回: 我想复制这些输出,例如: 我该怎么做呢?就像是: 问题答案: 您可以使用:
问题内容: 假设我Button在Python中使用进行了以下操作: 当我按下按钮时会调用该方法,但是如果我想向该方法传递一些参数呢? 我尝试使用以下代码: 这只是立即调用该方法,而按该按钮则无济于事。 问题答案: 我个人更喜欢lambdas在这种情况下使用,因为imo更加简单明了,并且如果你无法控制被调用的方法,也不会强迫你编写很多包装方法,但这当然是一个问题。 这就是使用lambda的方式(请注
问题内容: 当提供一些参数时,我想使我的python脚本从命令行运行。但是,参数之一应该是特定于脚本一个片段的选项列表。字符串解析是在逗号分隔“命令行列表”字符串之后实际构造列表的唯一方法吗?如果是这样,您将如何处理? 示例:-details = [‘name’,’title’,’address’] 问题答案: 程序: 命令行: 输出: 此代码段将执行短或长命令切换(例如或),并在切换到Pytho
问题内容: 我有一个名为的python文件,该python文件需要两个命令行参数:,Dockerfile如下所示: 如何通过这两个命令行参数,并以?我试过了但是没用。 问题答案: 您不能按预期使用和,因为它们是的选项。 启动一个终端。 将Docker容器作为守护程序启动。 要在Dockerfile中设置环境变量,请使用命令。 请参阅Dockerfile参考。 另一种选择是通过以下方式传递环境变量: