python读取文件最后几行_Python 读取大文件 最后几行

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值