我试图将两个包含整数的列表作为参数传递给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]
有更好的办法吗?
我在我的终端上测试了这个,我的输入如下:
我正在执行以下操作来转换两个感兴趣的参数:
不要重新发明轮子。使用argparse module,显式地并传入参数的实际列表
你可以用
命令行参数始终作为字符串传递。您需要自己将它们解析为所需的数据类型。
它们是像argparse和click这样的库,允许您定义自己的参数类型转换,但是
argparse
将"[2,3,4]"
视为[
2
,
3
,
4
]
,所以我怀疑它是否有用。编辑2019年1月此答案似乎仍有一些操作,因此我将添加另一个直接从argparse文档中获取的选项。
可以使用
action=append
将重复的参数收集到单个列表中。在这种情况下,您将为每个列表项传递一次
--foo ?
。使用OPs示例:python filename.py --foo 2 --foo 3 --foo 4 --foo 5
将导致foo=[2,3,4,5]
相关问题 更多 >
编程相关推荐