2013-05-19 154 views
0

在python2.7二進制文件我用POPEN傳遞多個變量在python運行外部程序有問題:Linux上運行

#!/usr/bin/env python 
import sys 
import os 
import shlex, subprocess 

a = raw_input("Enter a number:") 
b = raw_input("Enter a file:") 
c = raw_input("Enter dir to search:") 

subprocess.Popen(['/bin/sh', "./catnum.bin", "-m", a, "--remove", "-o results.txt", b, c]) 

回答

0

你可以使用電話來代替:

from subprocess import call 
call(["cactnum.bin", "-m",a, "--remove", "-o results.txt", b, c]) 

但是每JF塞巴斯蒂安

的評論真正的問題是invalid/unnecessary /bin/sh call b) "-o results.txt"應該寫成"-o", "results.txt"(2參數)即正確的調用是:subprocess.check_call(["./catnum.bin", "-m", a, "--remove", "-o", "results.txt", b, c]) if catnum.bin is executable

+0

謝謝!它工作現在=] – 0x0ins4n3m4yh3m

+0

如果它的工作,你可以upvote,並在以後接受答案:) –

+0

@Lucas:'subprocess.call()'只是'subprocess.Popen()。wait()'(你混合了'子進程''和'os'模塊 - 'Popen()'不被棄用)。真正的問題是a)無效/不必要的'/ bin/sh'調用b)''-o results.txt''應該寫成'「-o」,「results.txt」(2個參數),即正確的調用是:'subprocess.check_call([「./catnum.bin」,「-m」,a,「--remove」,「-o」,「results.txt」,b,c])'if' catnum.bin'是可執行的 – jfs