Python处理大文件删除指定行的内存优化方案

Theo
Theo
发布时间:2026-10-13| 5人浏览过
原创

本文介绍在Python中处理包含大量数据的大文件时,如何避免全量加载导致内存溢出。通过分段读取与覆盖写入的策略,定位目标行后利用seek和truncate方法实现单行删除,确保低内存占用下完成文件修改操作。

大文件内存溢出风险与分段处理策略

在使用Python处理包含海量数据的大文件时,若尝试将整个文件一次性加载至内存,极易引发内存溢出错误。为解决这一问题,推荐采用分段读取与修改的策略,即通过流式处理方式逐步操作文件内容。

基于文件指针定位与覆盖写入的代码实现


with open('file.txt', 'r') as old_file:
  with open('file.txt', 'r+') as new_file:

    current_line = 0

    # 定位到需要删除的行
    while current_line < (3 - 1): #(del_line - 1)
      old_file.readline()
      current_line += 1

    # 当前光标在被删除行的行首,记录该位置
    seek_point = old_file.tell()

    # 设置光标位置
    new_file.seek(seek_point, 0)

    # 读需要删除的行,光标移到下一行行首
    old_file.readline()

    # 被删除行的下一行读给 next_line
    next_line = old_file.readline()

    # 连续覆盖剩余行,后面所有行上移一行
    while next_line:
      new_file.write(next_line)
      next_line = old_file.readline()

    # 写完最后一行后截断文件,因为删除操作,文件整体少了一行,原文件最后一行需要去掉
    new_file.truncate()

truncate函数的截断机制说明

需要注意的是,truncate()函数括号内可指定一个数字参数,用于删除该数字之后的所有字符串内容;若未提供该参数,则截断操作将从当前文件指针(光标)所在的位置开始执行。

总结与参考建议

上述内容即为利用Python在大规模数据文件中删除特定行的完整示例,旨在为读者提供实用的参考方案。希望此方法能帮助您高效解决类似的数据处理问题,同时也欢迎继续支持本站获取更多技术分享。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。