def
get_last_line_for_small_file
(fname)
:with
open
(fname,
'r', encoding=
'utf-8'
)as f:
# 開啟檔案
lines = f.readlines(
)# 讀取所有行
first_line = lines[0]
# 取第一行
last_line = lines[-1
]# 取最後一行
print
('檔案'
+ fname +
'第一行為:'
+ first_line)
print
('檔案'
+ fname +
'最後一行為:'
+ last_line)
defget_last_line_for_big_file
(fname)
:with
open
(fname,
'rb'
)as f:
# 開啟檔案
# 在文字檔案中,沒有使用b模式選項開啟的檔案,只允許從檔案頭開始,只能seek(offset,0)
# first_line = f.readline() # 取第一行
offset =-50
# 設定偏移量
while
true
:"""
file.seek(off, whence=0):從檔案中移動off個操作標記(檔案指標),正往結束方向移動,負往開始方向移動。
如果設定了whence引數,就以whence設定的起始位為準,0代表從頭開始,1代表當前位置,2代表檔案最末尾位置。
"""f.seek(offset,2)
# seek(offset, 2)表示檔案指標:從檔案末尾(2)開始向前50個字元(-50)
lines = f.readlines(
)# 讀取檔案指標範圍內所有行
iflen
(lines)
>=2:
# 判斷是否最後至少有兩行,這樣保證了最後一行是完整的
last_line = lines[-1
]# 取最後一行
break
# 如果off為50時得到的readlines只有一行內容,那麼不能保證最後一行是完整的
# 所以off翻倍重新執行,直到readlines不止一行
offset *=
2return last_line.decode(
)
python讀取檔案最後一行
處理檔案時,乙個常見的需求就是讀取檔案的最後一行。那麼這個需求用python怎麼實現呢?乙個樸素的想法如下 with open a.log r as fp lines fp.readlines last line lines 1 即使不考慮異常處理的問題,這個 也不完美,因為如果檔案很大,lines...
python讀取檔案最後一行
處理檔案時,乙個常見的需求就是讀取檔案的最後一行。那麼這個需求用python怎麼實現呢?乙個樸素的想法如下 with open a.log r as fp lines fp.readlines last line lines 1 即使不考慮異常處理的問題,這個 也不完美,因為如果檔案很大,lines...
C 正確讀取檔案最後一行
使用c ifstream來讀取檔案時,發現在讀到檔案結尾時會多讀一行。測試 如下,include include include intmain void std string oneline while inf.eof false return0 data.txt內容如下,輸出如下,多讀了一行,為...