我现在想将列表作为参数时遇到问题。 列表是这种格式:
[1,0,0,0]
并且我将在另一个python代码中做类似的事情:
os.system('python main.py %s' %([list]))
当我在main.py中打印sys.argv [1]时,它不是我想要的:它打印
[1,
如何在main.py
中使用此列表?
答案 0 :(得分:0)
您面临的问题是当您将列表作为命令行参数传递而没有引号时,python正在将每个逗号分隔的值作为单个参数读取。只需将引号引起来,如下所示
main.py文件:
import sys
import ast
print sys.argv[1]
print type(ast.literal_eval(sys.argv[1]))
传递非字符串作为参数:
>>> import os
>>> os.system("python main.py '%s'"%[1,2])
[1, 2]
<type 'list'>
0
将列表或字典作为变量传递:
>>> a = [1,2]
>>> os.system("python main.py '%s'"%a)
[1, 2]
<type 'list'>
0
>>> dic = {1:2,2:3}
>>> os.system("python main.py '%s'"%dic)
{1: 2, 2: 3}
<type 'dict'>
0
编辑:
替代解决方案:使用字符串格式
>>>a = [1,2]
>>> os.system("python main.py '{}'".format(a))
[1, 2]
<type 'list'>
0
希望这会有所帮助