将列表中的列表作为参数传递给python中的子进程

时间:2015-07-06 21:19:38

标签: python list subprocess

我正在尝试将list中的list作为参数传递给subprocess。我的代码是:

def test():

    x= 'a'
    y = 'b'
    filename = "test.log"
    error_list = []
    error_list.append(x)
    error_list.append(y)
    para = ['1','2',str(error_list)]

    ret = subprocess.Popen([sys.executable,"script.py"]+para)
    ret.wait()

if __name__ == '__main__':
    test()

在我访问此脚本时在子进程脚本端:

def test(arg1,arg2,arg3):
    content = arg1 + arg2 + arg3
    print content
if __name__ == "__main__":

    arg1 = sys.argv[1]
    arg2 = sys.argv[2]
    arg3 = sys.argv[3]
    test(arg1,arg2,arg3)

前两个参数在content中正确,但第三个参数为[, ', a, ', ,, , ', b, ', ],而我希望它只是a,b

1 个答案:

答案 0 :(得分:2)

它打印12['a', 'b'],因为"['a', 'b']"是列表[x,y]的字符串表示形式。

如果您的预期输出为12a,b,请替换

para = ['1','2',str(error_list)]

para = ['1','2',','.join(error_list)]