python怎么讀文件最后幾行
處理文件時,一個常見的需求就是讀取文件的最后一行。那么這個需求用python怎么實現(xiàn)呢?一個樸素的想法如下:
withopen('a.log','r')asfp:
lines=fp.readlines()
last_line=lines[-1]
即使不考慮異常處理的問題,這個代碼也不完美,因為如果文件很大,lines=fp.readlines()會造成很大的時間和空間開銷。
解決的思路是用將文件指針定位到文件尾,然后從文件尾試探出一行的長度,從而讀取最后一行。代碼如下:
def__get_last_line(self,filename):
"""
getlastlineofafile
:paramfilename:filename
:return:lastlineorNoneforemptyfile
"""
try:
filesize=os.path.getsize(filename)
iffilesize==0:
returnNone
else:
withopen(filename,'rb')asfp:#touseseekfromend,mustusemode'rb'
offset=-8#initializeoffset
while-offset fp.seek(offset,2)#read#offsetcharsfromeof(representbynumber'2') lines=fp.readlines()#readfromfptoeof iflen(lines)>=2:#ifcontainsatleast2lines returnlines[-1]#thenlastlineistotallyincluded else: offset*=2#enlargeoffset fp.seek(0) lines=fp.readlines() returnlines[-1] exceptFileNotFoundError: print(filename+'notfound!') returnNone 其中有幾個注意點(diǎn): 1.fp.seek(offset[,where])中where=0,1,2分別表示從文件頭,當(dāng)前指針位置,文件尾偏移,缺省值為0,但是如果要指定where=2,文件打開的方式必須是二進(jìn)制打開,即使用'rb'模式, 2.設(shè)置偏移量時注意不要超過文件總的字節(jié)數(shù),否則會報OSError, 3.注意邊界條件的處理,比如文件只有一行的情況。 以上內(nèi)容為大家介紹了python培訓(xùn)之怎么讀文件最后幾行,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

相關(guān)推薦HOT
更多>>
python函數(shù)裝飾器的應(yīng)用過程
python函數(shù)裝飾器的應(yīng)用過程1、應(yīng)用過程一般是定義在一個獨(dú)立模塊中,使用時會被導(dǎo)入到其它模塊;函數(shù)裝飾器會在內(nèi)部定義一個新函數(shù),然后返回。...詳情>>
2023-11-10 22:33:56
python實現(xiàn)異步的兩種框架
python實現(xiàn)異步的兩種框架Python實現(xiàn)異步的框架有很多,但是核心思想大概是基于下面兩種方式twistergeventtwister1、twistertwister思想是將異...詳情>>
2023-11-10 22:11:26
python函數(shù)形式如何實現(xiàn)生成器
python函數(shù)形式如何實現(xiàn)生成器1、說明生成器也是迭代器,但只能迭代一次。這是因為它們沒有存儲所有的值,而是在運(yùn)行過程中產(chǎn)生值。你一直在使...詳情>>
2023-11-10 21:50:58
python描述符的兩種類型
python描述符的兩種類型1、分類數(shù)據(jù)描述符:實現(xiàn)了__get__和__set__兩種方法的描述符非數(shù)據(jù)描述符:只實現(xiàn)了__get__一種方法的描述符2、實例#數(shù)...詳情>>
2023-11-10 21:30:01熱門推薦
pythonLogging是什么?
沸python如何應(yīng)用于數(shù)據(jù)的基礎(chǔ)統(tǒng)計分析
熱python模塊的name屬性
熱pythongRPC是什么?
新python函數(shù)裝飾器的應(yīng)用過程
python實現(xiàn)異步的兩種框架
python函數(shù)形式如何實現(xiàn)生成器
python描述符的兩種類型
python__setattr__的屬性設(shè)置
pythonidle 是什么
pythonheapq是什么
python調(diào)試器是什么
pythonpsutil是什么
python創(chuàng)建新線程有哪些方法
技術(shù)干貨







快速通道 更多>>
-
課程介紹
點(diǎn)擊獲取大綱 -
就業(yè)前景
查看就業(yè)薪資 -
學(xué)習(xí)費(fèi)用
了解課程價格 -
優(yōu)惠活動
領(lǐng)取優(yōu)惠券 -
學(xué)習(xí)資源
領(lǐng)3000G教程 -
師資團(tuán)隊
了解師資團(tuán)隊 -
實戰(zhàn)項目
獲取項目源碼 -
開班地區(qū)
查看來校路線