将列表作为命令行参数传递给Python脚本

时间:2019-03-11 04:17:41

标签: python command-line-arguments

我现在想将列表作为参数时遇到问题。 列表是这种格式:

[1,0,0,0]

并且我将在另一个python代码中做类似的事情:

os.system('python main.py %s' %([list]))

当我在main.py中打印sys.argv [1]时,它不是我想要的:它打印

  

[1,

如何在main.py中使用此列表?

1 个答案:

答案 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

希望这会有所帮助