在linux上运行python2.7中的二进制文件
我在用python运行外部程序时遇到问题,该程序使用Popen传递多个变量:在linux上运行python2.7中的二进制文件,python,subprocess,Python,Subprocess,我在用python运行外部程序时遇到问题,该程序使用Popen传递多个变量: #!/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.
#!/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])
您可以改用call:
from subprocess import call
call(["cactnum.bin", "-m",a, "--remove", "-o results.txt", b, c])
然而根据J.F.塞巴斯蒂安的评论
真正的问题是无效/不必要的/bin/sh调用b)“-o results.txt”
应写成“-o”、“results.txt”
(2个参数),即正确的调用是:子进程。如果catnum.bin是可执行的,则检查调用([“/catnum.bin”、“-m”、a、“--remove”、“-o”、“results.txt”、b、c])
只是子进程.Popen().wait()
(您已经混合了子进程
和操作系统
模块--Popen()
未被弃用)。真正的问题是a)无效/不必要的/bin/sh
调用b)“-o results.txt”
应该写成“-o”、“results.txt”
(2个参数),即正确的调用是:子进程。检查调用([“/catnum.bin”、“-m”、a、“-remove”、“-o”、“results.txt”、b、c])/code>如果是可执行的