• <del id="a8uas"></del>
    • 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

      400-811-9990
      手機(jī)站
      千鋒教育

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

      千鋒教育

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

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

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

      上海
      • 北京
      • 鄭州
      • 武漢
      • 成都
      • 西安
      • 沈陽
      • 廣州
      • 南京
      • 深圳
      • 大連
      • 青島
      • 杭州
      • 重慶
      當(dāng)前位置:合肥千鋒IT培訓(xùn)  >  技術(shù)干貨  >  python怎么讀文件最后幾行

      python怎么讀文件最后幾行

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-11-10 10:30:08

      處理文件時,一個常見的需求就是讀取文件的最后一行。那么這個需求用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):千鋒教育。

      聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。

      猜你喜歡LIKE

      pythonLogging是什么?

      2023-11-10

      pythongRPC是什么?

      2023-11-10

      pythonpsutil是什么

      2023-11-10

      最新文章NEW

      python模塊的name屬性

      2023-11-10

      python調(diào)試器是什么

      2023-11-10

      python異常在程序的作用

      2023-11-10

      相關(guān)推薦HOT

      更多>>

      快速通道 更多>>

      最新開班信息 更多>>

      網(wǎng)友熱搜 更多>>