Python读取文件最后N行及单行的两种实现方案
本文介绍Python中读取文件最后N行及最后一行的两种方法。第一种适用于小文件,直接读取所有行后切片;第二种针对大文件,通过计算文件大小和块大小,利用seek定位读取末尾数据,避免全量加载内存。文中包含完整代码示例及日志格式说明,供Python开发者参考。
本文分享了Python中读取文件最后N行及最后一行的具体实现方法,供读者参考学习。
# -*- coding:utf8-*-
import os
import time
import datetime
import math
import string
def get_last_line(inputfile) :
filesize = os.path.getsize(inputfile)
blocksize = 1024
dat_file = open(inputfile, 'r')
last_line = ""
lines = dat_file.readlines()
count = len(lines)
if count>60:
num=60
else:
num=count
i=1;
lastre = []
for i in range(1,(num+1)):
if lines :
n = -i
last_line = lines[n].strip()
#print "last line : ", last_line
dat_file.close()
#print i
lastre.append(last_line)
return lastre
#获取最后一行的结果
re = get_last_line('../update/log/rtime/rtime20130805.log')
print len(re)
for n in re:
strlist = n.split(' ')
if strlist[1] == 'ok' and string.atoi(strlist[2])>1000:
print '数据条数正常'
print 'OK'
else:
print '数据太少,检查发邮件'
上述处理逻辑基于特定的日志文件格式,其内容结构如下所示:
2013-08-05 16:09:30 ok 1673 2013-08-05 16:10:34 ok 1628 2013-08-05 16:11:55 ok 71 2013-08-05 16:13:02 ok 1441 2013-08-05 16:14:06 ok 1634 2013-08-05 16:15:10 ok 1717 2013-08-05 16:16:14 ok 1687 2013-08-05 16:17:18 ok 1642 2013-08-05 16:18:27 ok 1655 2013-08-05 16:19:33 ok 1655
以下是读取文件最后一行的代码实现:
#返回文件最后一行函数 def get_last_line(inputfile) : filesize = os.path.getsize(inputfile) blocksize = 1024 dat_file = open(inputfile, 'r') last_line = "" if filesize > blocksize : maxseekpoint = (filesize // blocksize) dat_file.seek((maxseekpoint-1)*blocksize) elif filesize : #maxseekpoint = blocksize % filesize dat_file.seek(0, 0) lines = dat_file.readlines() if lines : last_line = lines[-1].strip() #print "last line : ", last_line dat_file.close() return last_line
更多Python相关实用技巧,欢迎查阅本站专题:《Python文件与目录操作技巧汇总》、《Python文本文件操作技巧汇总》、《Python URL操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》以及《Python入门与进阶经典教程》。
希望本文提供的代码示例能对您的Python程序设计工作有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













