码迷,mamicode.com
首页 > 编程语言 > 详细

Python 读取大文件 最后几行

时间:2014-10-29 12:53:19      阅读:739      评论:0      收藏:0      [点我收藏+]

标签:blog   os   sp   文件   div   on   log   ad   ef   

方法一:

# -*- 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")

  

Python 读取大文件 最后几行

标签:blog   os   sp   文件   div   on   log   ad   ef   

原文地址:http://www.cnblogs.com/Amei595409929/p/4059031.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!