本文實例講述了Python實現讀取文件最后n行的方法。分享給大家供大家參考,具體如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# -*- 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 '數據太少,檢查發郵件' |
以上處理和日志文件格式為
1
2
3
4
5
6
7
8
9
10
|
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 |
讀取最后一行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#返回文件最后一行函數 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程序設計有所幫助。