- how
文件分大小两种情况,大文件从文件末尾逆序获取,为防止文件最后一行过大,通过 size_limit 控制返回;
小文件直接从头读取。
def get_last_line_of_file(file_name, size_limit=-1):
file_size = os.path.getsize(file_name)
with open(file_name, 'rb') as f:
if file_size >= 500:
off = -50
while True:
f.seek(off, 2)
lines = f.readlines()
if len(lines) >= 2:
return lines[-1].decode()
if off == file_size:
return lines[-1].decode()
if -off > size_limit > 0:
return lines[-1].decode()[-size_limit:]
off *= 2
if -off > file_size:
off = -file_size
else:
lines = f.readlines()
return lines[-1].decode()