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

当处理大量日志文件时,只需获取文件的最后几行。该方法通过定位到文件末尾并向前读取,实现了高效读取大文件的最后指定行数。示例展示了如何使用此方法读取CSV文件的最后5行并进行解码显示。
摘要由CSDN通过智能技术生成

程序的跑批日志有时候累加的多了会特别的大,如果我们只需要获取文件的后几行的话,就不需要依次遍历。

自定义方法

import os

def file_get_last_lines(file_path, num):

"""

读取大文件的最后几行

:param file_path: 文件路径

:param num: 读取行数

:return:

"""

num = int(num)

blk_size_max = 4096

n_lines = []

with open(file_path, 'rb') as fp:

fp.seek(0, os.SEEK_END)

cur_pos = fp.tell()

while cur_pos > 0 and len(n_lines) < num:

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'\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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值