Python 实时读取更新中日志文件的方法

木白
木白
发布时间:2026-10-13| 4人浏览过
原创

本文介绍在Python中通过文件指针定位实现实时读取更新中日志文件的方法。利用rb模式打开文件,结合全局变量记录字节位置,使用seek定位并逐行读取新增内容,适用于Server-Send Events等实时推送场景。

实时读取日志的需求与挑战

在项目开发过程中,有时需要将本地日志文件通过 Server-Send Event 机制推送给前端展示。

核心难点在于如何准确提取并读取新增的日志文本内容。

一种常见的思路是遍历日志文件获取总行数,然后读取最后几行。但这种方式存在明显缺陷,因为日志文件可能会发生重复写入或覆盖,导致数据不准确。经过查阅相关资料,整理出以下解决方案。

Python 实现代码示例


start_point=0
def read_logs():
  fo = open("heakth_info.log", "rb") # 一定要用'rb'因为seek 是以bytes来计算的
  print ("文件名为: ", fo.name)
  global start_point #使用全局变量,让start_point 时刻保持在已经输出过的那个字节位
  fo.seek(start_point, 1)#移动文件读取指针到指定位置 
  for line in fo.readlines():
    print ("读取的数据为:" + str(line.decode()))
  #输出后的指针位置赋值给start_piont
  start_point=fo.tell()
  fo.close()

关键实现细节说明

代码中打开文件时必须使用 "rb" 模式,因为文件指针操作 seek 是基于字节(bytes)进行计算的。

通过定义全局变量 start_point,使其在每次运行结束后始终停留在最后一次成功输出的位置,从而作为下一次读取的起始点。

利用 fo.tell() 获取文件当前的读写位置,并在每次运行结束时将该值赋给 start_point。

通过定时调用该函数,即可持续获取最新的日志内容。

以上即为 Python 读取更新中日志或其他文本文件的实现方式,供参考使用。

相关标签:

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

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 算法库。