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 の両方を 1 つの引数と見なします。これは、文字列変数の値を引数として渡す正しいアプローチですか?

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

これは私のために働く:

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
于 2013-10-21T08:10:30.613 に答える