我有一个c可执行文件,它从iot硬件获取数据并使用printf在控制台上打印信息。我想从python运行这个可执行文件,我可以使用subprocess.call以下面的方式执行此操作
@x
并将输出打印到控制台。但我需要使用我的python代码捕获此输出(printf)以进一步实时处理信息。如何使用子进程实时捕获此输出?
答案 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