久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > python怎么讀文件最后幾行

python怎么讀文件最后幾行

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-11 04:30:40 1699648240

處理文件時(shí),一個(gè)常見的需求就是讀取文件的最后一行。那么這個(gè)需求用python怎么實(shí)現(xiàn)呢?一個(gè)樸素的想法如下:

withopen('a.log','r')asfp:

lines=fp.readlines()

last_line=lines[-1]

即使不考慮異常處理的問(wèn)題,這個(gè)代碼也不完美,因?yàn)槿绻募艽螅琹ines=fp.readlines()會(huì)造成很大的時(shí)間和空間開銷。

解決的思路是用將文件指針定位到文件尾,然后從文件尾試探出一行的長(zhǎng)度,從而讀取最后一行。代碼如下:

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

其中有幾個(gè)注意點(diǎn):

1.fp.seek(offset[,where])中where=0,1,2分別表示從文件頭,當(dāng)前指針位置,文件尾偏移,缺省值為0,但是如果要指定where=2,文件打開的方式必須是二進(jìn)制打開,即使用'rb'模式,

2.設(shè)置偏移量時(shí)注意不要超過(guò)文件總的字節(jié)數(shù),否則會(huì)報(bào)OSError,

3.注意邊界條件的處理,比如文件只有一行的情況。

以上內(nèi)容為大家介紹了python培訓(xùn)之怎么讀文件最后幾行,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
吐鲁番市| 安图县| 宁陵县| 青神县| 商河县| 汶川县| 泾川县| 晋江市| 申扎县| 调兵山市| 静海县| 白朗县| 建宁县| 龙陵县| 五河县| 常德市| 锦屏县| 灌南县| 珲春市| 报价| 恩施市| 吉木萨尔县| 织金县| 上蔡县| 甘德县| 顺义区| 桦川县| 东方市| 鲜城| 博乐市| 阿荣旗| 化州市| 清流县| 湾仔区| 梁平县| 永顺县| 突泉县| 屯留县| 兰考县| 龙海市| 阜城县|