通过sys.argv获取列表

时间:2012-10-19 08:48:13

标签: python

我将mylist作为参数传递给sys.argv,我这样做:

mylist = str(list)
nbre = str(nbre)
comm = 'python2.6 file.py ' + mylist + ' ' + nbre + ' &'
os.system(comm)

file.py中,我希望通过这种方式得到mylist,其中包含[machine1,machine2],但在执行时:

mylist = sys.argv[1]

我得到[machine1,这是错误的。当我显示sys.argv时,我发现:

['file.py','[machine1,','machine2]','1']

我不明白为什么我的名单是这样组成的?

1 个答案:

答案 0 :(得分:4)

除了这是一个将列表从一个python脚本传递到另一个python脚本的可怕方法之外,你需要在列表周围使用引号来防止它被shell拆分:

comm = 'python2.6 file.py "%s" "%s" &' % (mylist, nbre)

我已使用string formatting将引号括在mylistnbre附近。

你真的想调查subprocess module来调用其他进程而不会让shell受阻。