如何用python最快的获取大文件的最后几行
2024-08-26 04:27:11
工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断。那么,这种情况下我们应该怎么做呢?
1)常规方法:从前往后依次读取
步骤:open打开日志文件。
读取文件,获取文件的总行数。
遍历所有行,提取指定行的数据。
优点:简单,方便
缺点:当文件大了以后时间太慢,无法忍受
2)推荐方法:
步骤:open打开日志文件。
移动文件读取指针到文件末尾。
从后往前移动指针直到合适的位置。
读取文件,提取指定行的数据。
优点:时间相对固定,适合处理大文件
示例:
logFile = open('logFilePath.log', 'r')
logFile.seek(0,2)
logFile.seek(-1000000,2)
rowCount = 0
for row in logFile.readlines()[1:]:
pass
seek():移动文件读取指针到指定位置
tell():返回文件读取指针的位置
seek()的三种模式:
(1)f.seek(p,0) 移动当文件第p个字节处,绝对位置
(2)f.seek(p,1) 移动到相对于当前位置之后的p个字节
(3)f.seek(p,2) 移动到相对文章尾之后的p个字节
最新文章
- 通过Zabbix API实现对主机的增加(无主机资产的添加和带主机资产的添加)、删除、获取主机id、获取模板id、获取组id
- (转)SQL 优化原则
- hdu4607 Park Visit(树的直径)
- 浅析C语言指针问题
- 关于OpenVPN的入门使用
- 2014--9=17 软工二班 MyEclipse blue==修改浏览器语言
- 数据存储(一)--SharedPreferences之你不知道的事
- 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法-备
- session的存储方式和配置
- 消息提示demo
- dgraph实现基本操作
- C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header";
- Delphi调用java so
- c# 通过GroupBy 进行分组
- Spring声明式事务管理(基于XML方式实现)
- 使用 lxml 中的 xpath 高效提取文本与标签属性值
- 剑指offer面试题19 二叉树的镜像
- PostgreSQL设置事务隔离级别实验
- Java程序设计16——Annotatio注释
- SpringMVC源码解析 - HandlerAdapter - @SessionAttributes注解处理