使用 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中文网其他相关文章!