python

超轻量级php框架startmvc

Python实现读取文件最后n行的方法

更新时间:2020-04-27 20:20:01 作者:startmvc
本文实例讲述了Python实现读取文件最后n行的方法。分享给大家供大家参考,具体如下:#-*-c

本文实例讲述了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 读取 文件 最后n行