2013-10-09 39 views
1

test1.py是通过传递已传递给test1.py的同一个参数列表来调用另一个脚本test2.py的主脚本。我已经做以下,但它读取sys.argv列表作为字符串并解析成多个参数,也包括不必要[和,从另一个调用Python脚本并将List(sys.argv)作为参数传递

test1.py 
import os 
import sys 

argList=sys.argv[1:] 

os.system('python another/location/test2.py %s'%(argList)) 

test2.py 

import sys 
print(sys.argv[1:]) 

Call test1.py 
python test1.py -a -b -c 
output: ['[-a,' ,'-b,', '-c]' ] 

请后,如果有一个更好的opti

+0

当你进行字符串格式化时,什么是'argList'转换成?这不是你所期望的。你想用某种方法来自己格式化'argList' ...查看一个字符串的'join'方法。 –

回答

1

使用

os.system('python another/location/test2.py %s' % ' '.join(argList)) 

如果参数本身不包含空格。

第二个方案将输出

['-a', '-b', '-c'] 

如果你的论点可以包含空格,它可能是最好引用它们。使用' '.join("'%s'" % arg.replace("'", "\\'") for arg in ArgList)

+0

谢谢,join()有什么用?它会将所有列表元素与分隔符''(空格)相加吗? – creativeDrive

+0

确实。 'string.join(list)'会做'list [0] + string + list [1] + ...'(但它更好)。 – Noctua

相关问题