工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分行来做判断。那么,这种情况下我们应该怎么做呢?

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个字节

最新文章

  1. 通过Zabbix API实现对主机的增加(无主机资产的添加和带主机资产的添加)、删除、获取主机id、获取模板id、获取组id
  2. (转)SQL 优化原则
  3. hdu4607 Park Visit(树的直径)
  4. 浅析C语言指针问题
  5. 关于OpenVPN的入门使用
  6. 2014--9=17 软工二班 MyEclipse blue==修改浏览器语言
  7. 数据存储(一)--SharedPreferences之你不知道的事
  8. 升级10.11后使用CocoaPod出现-bash: pod: command not found 解决办法-备
  9. session的存储方式和配置
  10. 消息提示demo
  11. dgraph实现基本操作
  12. C++ 出现异常“.... \debug_heap.cpp Line:980 Expression:__acrt_first_block==header"
  13. Delphi调用java so
  14. c# 通过GroupBy 进行分组
  15. Spring声明式事务管理(基于XML方式实现)
  16. 使用 lxml 中的 xpath 高效提取文本与标签属性值
  17. 剑指offer面试题19 二叉树的镜像
  18. PostgreSQL设置事务隔离级别实验
  19. Java程序设计16——Annotatio注释
  20. SpringMVC源码解析 - HandlerAdapter - @SessionAttributes注解处理

热门文章

  1. Linux 批量替换的一种实现方式
  2. urllib库python2和python3具体区别
  3. HashMap与 HashTable, Treemap的区别
  4. Java 学习 day03
  5. python 搜集参数的共有项和所有项
  6. Halcon下载、安装
  7. CodeIgniter底层数据库类继承关系
  8. Java一致性的实现
  9. Linux中常用文件传输命令及使用方法
  10. BZOJ 1650 [Usaco2006 Dec]River Hopscotch 跳石子:二分