您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關python讀文件最后幾行的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
處理文件時,一個常見的需求就是讀取文件的最后一行。那么這個需求用python怎么實現呢?一個樸素的想法如下:
with open('a.log', 'r') as fp: lines = fp.readlines() last_line = lines[-1]
即使不考慮異常處理的問題,這個代碼也不完美,因為如果文件很大,lines = fp.readlines()會造成很大的時間和空間開銷。
解決的思路是用將文件指針定位到文件尾,然后從文件尾試探出一行的長度,從而讀取最后一行。代碼如下:
def __get_last_line(self, filename): """ get last line of a file :param filename: file name :return: last line or None for empty file """ try: filesize = os.path.getsize(filename) if filesize == 0: return None else: with open(filename, 'rb') as fp: # to use seek from end, must use mode 'rb' offset = -8 # initialize offset while -offset < filesize: # offset cannot exceed file size fp.seek(offset, 2) #read#offset chars from eof(represent by number'2') lines = fp.readlines() # read from fp to eof if len(lines) >= 2: # if contains at least 2 lines return lines[-1] # then last line is totally included else: offset *= 2 # enlarge offset fp.seek(0) lines = fp.readlines() return lines[-1] except FileNotFoundError: print(filename + ' not found!') return None
其中有幾個注意點:
1. fp.seek(offset[, where])中where=0,1,2分別表示從文件頭,當前指針位置,文件尾偏移,缺省值為0,但是如果要指定where=2,文件打開的方式必須是二進制打開,即使用'rb'模式,
2. 設置偏移量時注意不要超過文件總的字節數,否則會報OSError,
3. 注意邊界條件的處理,比如文件只有一行的情況。
感謝各位的閱讀!關于python讀文件最后幾行的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。