python3 读取大文本最后指定行数内容
import sys import os
import string#python2写法
RCV_LOG = r"C:\Users天宇Desktop\out" def get_last_n_lines(logfile, n): n=int(n)#python3写法
#n
=
string.atoi(n)#python2写法
blk_size_max = 4096 n_lines = [] with open(logfile, "rb") as fp: fp.seek(0, os.SEEK_END) cur_pos = fp.tell() while cur_pos > 0 and len(n_lines) < n: blk_size = min(blk_size_max, cur_pos) fp.seek(cur_pos - blk_size, os.SEEK_SET) blk_data = fp.read(blk_size) assert len(blk_data) == blk_size lines = blk_data.split(b" ") # adjust cur_pos if len(lines) > 1 and len(lines[0]) > 0: n_lines[0:0] = lines[1:] cur_pos -= (blk_size - len(lines[0])) else: n_lines[0:0] = lines cur_pos -= blk_size fp.seek(cur_pos, os.SEEK_SET) if len(n_lines) > 0 and len(n_lines[-1]) == 0: del n_lines[-1] return n_lines[-n:] print(get_last_n_lines(RCV_LOG, "5"))
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: Python读取文件中特定位置及特定数目的内容
- 下一篇: web前端性能优化总结