Python:将字符串变量的值作为参数传递给Popen

时间:2013-10-21 08:05:54

标签: python

在Python中将字符串变量的值传递给Popen函数的正确方法是什么?我尝试了下面的代码

var1 = 'hello'
var2 = 'universe'
p=Popen('/usr/bin/python /apps/sample.py ' + '"' + str(eval('var1')) + ' ' + '"' + str(eval('var2')), shell=True)

,在sample.py中,下面是代码

print sys.argv[1]
print '\n'
print sys.argv[2]

但它会输出以下输出

hello universe
none

因此它将var1和var2都视为一个参数。这是将字符串变量的值作为参数传递的正确方法吗?

2 个答案:

答案 0 :(得分:1)

这应该有效:

p = Popen('/usr/bin/python /apps/sample.py {} {}'.format(var1, var2), shell=True)

了解string formatting

其次,将参数传递给脚本有其怪癖:http://docs.python.org/2/library/subprocess.html#subprocess.Popen

这对我有用:

test.py:

#!/usr/bin/env python

import sys

print sys.argv[1]
print '\n'
print sys.argv[2]

然后:

chmod +x test.py

然后:

Python 2.7.4 (default, Jul  5 2013, 08:21:57) 
>>> from subprocess import Popen
>>> p = Popen('./test.py {} {}'.format('hello', 'universe'), shell=True)
>>> hello


universe

答案 1 :(得分:0)

var1 = 'hello'
var2 = 'universe'
p=Popen("/usr/bin/python /apps/sample.py %s %s"%(str(eval('var1')), str(eval('var2'))), shell=True)

传递格式说明符是很好的方法。