我将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']
我不明白为什么我的名单是这样组成的?
答案 0 :(得分:4)
除了这是一个将列表从一个python脚本传递到另一个python脚本的可怕方法之外,你需要在列表周围使用引号来防止它被shell拆分:
comm = 'python2.6 file.py "%s" "%s" &' % (mylist, nbre)
我已使用string formatting将引号括在mylist
和nbre
附近。
你真的想调查subprocess
module来调用其他进程而不会让shell受阻。