Python subprocess 实现子进程实时日志输出详解

追风的人
追风的人
发布时间:2026-10-14| 4人浏览过
原创

本文介绍如何使用 Python 的 subprocess 模块配合 stdout=subprocess.PIPE 实现子进程日志的实时读取。通过轮询 p.poll() 状态并逐行读取 stdout,可避免缓冲区阻塞,确保主进程能即时捕获子进程的输出内容。

Python subprocess 实时输出日志实现

test11.py 文件内容如下


import time
print "1"
time.sleep(2)
print "1"
time.sleep(2)
print "1"
time.sleep(2)
print "1"

test.py 文件内容如下

导入 subprocess 模块

使用 subprocess.Popen 启动子进程,指定命令为 python test11.py,启用 shell 模式,并将标准输出重定向到管道

poll() 方法返回 None 表示子进程仍在运行

当 poll() 返回 None 时,循环读取 stdout 的一行输出。若该行不为空字符串,则打印该输出内容

子进程命令执行与日志重定向

补充说明:利用 subprocess.Popen 执行命令时,通过重定向标准输出可实现实时日志捕获

执行具体命令的代码示例


import subprocess
import sys

# 常用编码
GBK = 'gbk'
UTF8 = 'utf-8'

# 解码方式,一般 py 文件执行为utf-8 ,cmd 命令为 gbk
current_encoding = GBK
popen = subprocess.Popen('ping www.baidu.com', shell = True,
             stdout = subprocess.PIPE,
             stderr = subprocess.PIPE,
             bufsize = 1)
out,err = popen.communicate()
print('std_out: ' + out)
print('std_err: ' + err)
print('returncode: ' + str(popen.returncode))

执行 .py 文件的代码示例


import subprocess
import sys

# 常用编码
GBK = 'gbk'
UTF8 = 'utf-8'

current_encoding = UTF8 
popen = subprocess.Popen('python D:\code\test.py',
             stdout = subprocess.PIPE,
             stderr = subprocess.PIPE,
             bufsize = 1)
out,err = popen.communicate()
print('std_out: ' + out)
print('std_err: ' + err)
print('returncode: ' + str(popen.returncode))

以上关于 Python subprocess pipe 实时输出日志的操作方法分享完毕,供读者参考。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。