工做中常常会遇处处理日志文件的问题:为了获得日志的最新状态,咱们须要获取日志文件的最后部分行来作判断。那么,这种状况下咱们应该怎么作呢?python
1)常规方法:从前日后依次读取ide
步骤:open打开日志文件。指针
读取文件,获取文件的总行数。日志
遍历全部行,提取指定行的数据。it
优势:简单,方便class
缺点:当文件大了之后时间太慢,没法忍受遍历
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个字节