You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何高效读取大文件指定两行间内容 避免全量加载

低内存读取大文件指定行区间实现方案

核心思路是利用Python文件对象的迭代器特性逐行读取,全程不加载全量文件内容,内存占用和文件总大小无关,哪怕是十万、百万行级的文件也能稳定运行。

实现逻辑

  • 打开文件后直接遍历文件对象,这种方式每次只会把当前行加载到内存,不会像readlines()一样一次性把所有行读入列表
  • 遍历过程中用枚举值记录当前行号,行号小于等于起始行号时直接跳过,不做额外存储
  • 行号落在(start_line, end_line)开区间内时,收集当前行内容(自动剔除末尾换行符)
  • 行号大于等于结束行号时直接终止遍历,不需要读完文件剩余部分,减少不必要的磁盘IO开销

可直接运行的代码

def between_lines(start_line: int, end_line: int, file_path: str = "target.txt") -> list:
    result = []
    with open(file_path, 'r', encoding='utf-8') as f:
        for current_line_num, line in enumerate(f):
            if current_line_num <= start_line:
                continue
            if current_line_num >= end_line:
                break
            result.append(line.rstrip('\n'))
    return result


# 测试调用
if __name__ == "__main__":
    print(between_lines(0, 3))
    # 针对示例里的a/b/c/d四行文件,输出 ['b', 'c'],完全匹配预期效果

内存表现说明

针对4000行的目标文件,这个实现全程内存占用仅为单条最长行的大小+区间内返回内容的大小,哪怕文件扩容到GB级,只要目标读取的区间长度不大,内存占用始终保持在极低水平,不会出现内存占满的问题。

内容的提问来源于stack exchange,提问作者mzvic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:42:25