将列表作为命令行参数传递给 Python 脚本
Pass a list to a Python script as a command line argument
我目前遇到一个问题,我想将列表作为参数。
列表是这种格式:
[1,0,0,0]
我将在另一个 python 代码中做类似的事情:
os.system('python main.py %s' %([list]))
当我在 main.py 中打印 sys.argv[1] 时,这不是我想要的:它打印
[1,
如何在 main.py
中使用此列表?
您面临的问题是当您将列表作为命令行参数传递时不带引号,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
希望对您有所帮助
我目前遇到一个问题,我想将列表作为参数。 列表是这种格式:
[1,0,0,0]
我将在另一个 python 代码中做类似的事情:
os.system('python main.py %s' %([list]))
当我在 main.py 中打印 sys.argv[1] 时,这不是我想要的:它打印
[1,
如何在 main.py
中使用此列表?
您面临的问题是当您将列表作为命令行参数传递时不带引号,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
希望对您有所帮助