python - 将 python 中的参数传递给 c 可执行文件

标签 python

我有一个 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 简化了读取进程的标准输出,因此您可以将 Popenwaitread 替换为

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/

相关文章:

python - 将 pycassa 与 uwsgi 一起使用时的问题

Python - 列表中是否可以有字典?

python - 为什么 Python 的语法规范不包括文档字符串和注释?

Python 列表 - 这种连接是如何建立的?

python - pandas.concat 和 numpy.append 的大数据集内存错误

python - 过滤我的注释

python - 无法在 anaconda python 中使用 netcdf4

python - 带有可拖动点的可拖动线

python - 如何从OpenCV Python中的图像获取标题

python - 构建引用 Boost 的 Python 包时出现 LNK1120