首页  >  文章  >  后端开发  >  如何在 Python 中从 Subprocess.Popen 获取实时输出?

如何在 Python 中从 Subprocess.Popen 获取实时输出?

DDD
DDD原创
2024-11-14 19:32:02593浏览

How to Get Realtime Output from Subprocess.Popen in Python?

使用 subprocess 获取实时输出

Subprocess 是 Python 中的一个强大模块,用于执行其他程序并与其输入和输出交互。然而,用户可能会遇到这样的场景,他们需要实时检索执行程序的输出,而不需要任何缓冲。

问题描述

使用时出现问题subprocess.Popen 将 stdout 设置为管道。包装程序的输出似乎被缓冲,导致数据块而不是逐行传递。将 bufsize 参数设置为 1 或 0 并不能解决问题。

解决方案:从 readline() 迭代读取

尽管有上述子进程行为,但以下代码片段有效地实时检索输出:

while True:
  line = p.stdout.readline()
  if not line: break
  ...

使用 readline() 而不是迭代 p.stdout 直接绕过缓冲问题并允许实时输出检索。

以上是如何在 Python 中从 Subprocess.Popen 获取实时输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn