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

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

DDD
发布: 2024-11-14 19:32:02
原创
664 人浏览过

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() 而不是迭代over p.stdout 直接绕过缓冲问题并允许实时输出检索。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板