使用subprocess.call实时读取c可执行print语句的输出

时间:2017-03-24 06:42:38

标签: python c subprocess

我有一个c可执行文件,它从iot硬件获取数据并使用printf在控制台上打印信息。我想从python运行这个可执行文件,我可以使用subprocess.call以下面的方式执行此操作

@x

并将输出打印到控制台。但我需要使用我的python代码捕获此输出(printf)以进一步实时处理信息。如何使用子进程实时捕获此输出?

2 个答案:

答案 0 :(得分:1)

以下打开一个子进程并从输出中创建一个迭代器。

import subprocess
import sys

proc = subprocess.Popen(['ping','google.com'], stdout=subprocess.PIPE)

for line in iter(proc.stdout.readline, ''):
    print(line)  # process line-by-line

此解决方案已从答案修改为similar question

答案 1 :(得分:-1)

如果你正在使用python 2x

查看命令模块

beq

for python3x

使用子流程模块

import commands

output=commands.getoutput("gcc demoProgram.c") #command to be executed
print output