gpt4 book ai didi

python - 如何异步获取子进程的标准输出数据?

转载 作者:太空狗 更新时间:2023-10-29 18:21:28 29 4
gpt4 key购买 nike

我为我的应用程序编写了一个简单的 python 脚本,并预定义了一些快速命令,如 make 等。

我写了一个运行系统命令的函数(linux):

def runCommand(commandLine):
print('############## Running command: ' + commandLine)
p = subprocess.Popen(commandLine, shell = True, stdout = subprocess.PIPE)
print (p.stdout.read().decode('utf-8'))

除少数情况外一切正常:

  • 我正在使用 cmake,它的输出是彩色的。有机会在输出中保存颜色吗?

  • 我可以在流程完成后查看输出。例如,make 运行了很长时间,但我只能在完全编译后才能看到输出。如何异步完成?

最佳答案

我不确定颜色,但这是一次轮询子进程的标准输出的方法:

import subprocess
proc = subprocess.Popen('cmake', shell=True, stdout=subprocess.PIPE)
while proc.poll() is None:
output = proc.stdout.readline()
print output

不要忘记也从 stderr 读取,因为我确定 cmake 会在那里发出信息。

关于python - 如何异步获取子进程的标准输出数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8977679/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com