我有一个 C 可执行文件,其工作原理如下:
./avg filename opt1 opt2 opt3
例如:
./avg one.dat 1 1 -1
返回类似
的内容 127.504 2.244375804433813 1.111195552742103 blks: 500
当我尝试从 python 代码中调用它时,我尝试过:
import os
os.system("./avg one.dat 1 1 -1")
以及
import subprocess
#args = ("./avg","one.dat","1","1","-1")
args = ("./avg one.dat 1 1 -1")
popen = subprocess.Popen(args, stdout=subprocess.PIPE)
popen.wait()
output = popen.stdout.read()
print output
两者都不起作用,并且可执行文件没有足够的参数传递给可执行文件。它应该至少有 4 个选项。
任何帮助将不胜感激,提前致谢。
最佳答案
在读取子进程的输出之前,您不能wait()
; wait
等待子进程终止,但子进程被阻止写入其输出! subprocess.check_output
简化了读取进程的标准输出,因此您可以将 Popen
、wait
和 read
替换为
output = subprocess.check_output(['./avg', 'one.dat', '1', '1', '-1'])
并且 args = ("./avg","one.dat","1","1","-1")
(或上面的列表)是正确的方法去做吧;每个参数都需要是可迭代中的单独元素。
关于python - 将 python 中的参数传递给 c 可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35846636/