牛骨文教育服务平台(让学习变的简单)
博文笔记

python3 读取大文本最后指定行数内容

创建时间:2018-01-23 投稿人: 浏览次数:266
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写法
#= 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"))
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。