首页 > 后端开发 > Python教程 > 如何使用Python的'子进程”显示实时程序输出?

如何使用Python的'子进程”显示实时程序输出?

Mary-Kate Olsen
发布: 2024-11-15 09:55:02
原创
936 人浏览过

How to Display Real-time Program Output with Python's `subprocess`?

使用子进程访问实时程序输出

问题:

我们如何获得在Python中使用子进程实时程序输出?具体来说,我们如何在不缓冲输出的情况下显示命令行程序的进度?

答案:

从执行的程序中获取实时输出子流程,我们可以使用以下技巧:

import subprocess

p = subprocess.Popen('svnadmin verify /var/svn/repos/config',
                     stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
                     bufsize=0)  # Set bufsize to 0 for no buffering

while True:
    line = p.stdout.readline()
    if not line:
        break
    print(line.replace('\n', ''))
登录后复制

说明:

  • 我们在 Popen 中将 bufsize 设置为 0 以禁用输出缓冲。
  • 在 while 循环中,我们使用 readline() 不断从 p.stdout 读取行。
  • 如果没有行可用,循环中断并且程序退出。
  • 我们可以处理或显示收到的每一行,提供实时输出。

注意:

  • 此方法可能不适用于所有系统或所有程序。
  • 对于 Python 3.8 及更高版本,请考虑使用 asyncio 而不是原始文件描述符来处理子进程输出。

以上是如何使用Python的'子进程”显示实时程序输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

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