方法一:
# -*- coding: utf-8 -*- import sys import os import string RCV_LOG = r"d:\c.txt" def get_last_n_lines(logfile, n): n = string.atoi(n) 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(‘\n‘) # 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:] get_last_n_lines(RCV_LOG, "5")
时间: 2024-10-07 07:41:33