工做中常常會遇處處理日誌文件的問題:爲了獲得日誌的最新狀態,咱們須要獲取日誌文件的最後部分行來作判斷。那麼,這種狀況下咱們應該怎麼作呢?python
1)常規方法:從前日後依次讀取ide
步驟:open打開日誌文件。指針
讀取文件,獲取文件的總行數。日誌
遍歷全部行,提取指定行的數據。it
優勢:簡單,方便class
缺點:當文件大了之後時間太慢,沒法忍受遍歷
2)推薦方法:方法
步驟:open打開日誌文件。文件讀取
移動文件讀取指針到文件末尾。數據
從後往前移動指針直到合適的位置。
讀取文件,提取指定行的數據。
優勢:時間相對固定,適合處理大文件
示例:
logFile = open('logFilePath.log', 'r') logFile.seek(0,2) logFile.seek(-1000000,2) rowCount = 0 for row in logFile.readlines()[1:]: pass
seek():移動文件讀取指針到指定位置
tell():返回文件讀取指針的位置
seek()的三種模式:
(1)f.seek(p,0) 移動當文件第p個字節處,絕對位置
(2)f.seek(p,1) 移動到相對於當前位置以後的p個字節
(3)f.seek(p,2) 移動到相對文章尾以後的p個字節