2011-12-22 25 views
4

私は、複数のパラメータをpythonスクリプトに渡す方法を理解しようとしましたが、これは運がなくてもsubprocess.Popenによって実行されるはずです。私はシェルpython:Popenコマンドの複数のパラメータを渡す

/usr/bin/python /tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL \ 
mse=NULL mce=cll01 

から直接スクリプトを実行するとき、私は、所望の出力を受信し、しかし

python: can't open file '/tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL \ 
mse=NULL mce=cll01': [Errno 2] No such file or directory 

スクリプト:

command = ['/usr/bin/python', '/tmp/script.py mcl=NULL mtp=data mnm=DS4INST \ 
      mno=NULL mse=NULL mce=cll01'] 

result = subprocess.Popen(command, stdout = subprocess.PIPE, \ 
     stderr = subprocess.PIPE) 

out, err = result.communicate() 

print out, err 

Iは、次のエラーメッセージが表示されますa ndエラーメッセージは生成されません。

お知らせください。

答えて

6

これを試してみてください:

command = ['/usr/bin/python', '/tmp/script.py', 'mcl=NULL', 'mtp=data', 'mnm=DS4INST', 'mno=NULL' 'mse=NULL', 'mce=cll01'] 

をあなたのコードでは、commandの2番目の要素は、1つの引数として考えとして解釈されますので、ちょうどスペースを含む長いファイル名のように

/usr/bin/python "/tmp/script.py mcl=NULL mtp=data mnm=DS4INST mno=NULL mse=NULL mce=cll01" 

引数をcommandリストの別々の要素に分割する必要があります。

+0

これは何らかの理由でscript.pyを各パラメータで個別に実行します – m1k3y3

+0

@ m1k3y02 - 私は妥協を試みます: '['/ usr/bin/python'、 '/tmp/script.py'、 'mcl = NULL mtp = data ... '] ' – eumiro

+0

それは動作しますが、sys.argvはすべてのパラメータを1つとして認識しますので、処理できる追加の解析が必要です。どうもありがとう。 – m1k3y3

関連する問題