0

将字符串变量的值传递给 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 作为一个论点。这是将字符串变量的值作为参数传递的正确方法吗?

4

2 回答 2

1

这应该有效:

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

了解字符串格式

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

这对我有用:

测试.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
于 2013-10-21T08:10:30.613 回答
0
var1 = 'hello'
var2 = 'universe'
p=Popen("/usr/bin/python /apps/sample.py %s %s"%(str(eval('var1')), str(eval('var2'))), shell=True)

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

于 2013-10-21T11:05:09.753 回答