python 删除大文件中的某一行(最有效率的方法)


Posted in Python onAugust 19, 2017

用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件。

但如果要处理一个很大的文本,比如GB级别的文本时,这种方法不仅需要占用很大内存,而且一次性读入内存时耗费时间,还有可能导致内存溢出。

所以,需要用另外一个思路去处理。

我们可以使用 open() 方法把需要修改的文件打开为两个文件,然后逐行读入内存,找到需要删除的行时,用后面的行逐一覆盖。实现方式见以下代码。

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

    current_line = 0

    # 定位到需要删除的行
    while current_line < (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()

以上这篇python 删除大文件里的某一行(最有效率的方法)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python登录pop3邮件服务器接收邮件的方法
Apr 30 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
python使用opencv对图像mask处理的方法
Jul 05 Python
Django框架之DRF 基于mixins来封装的视图详解
Jul 23 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
基于Python新建用户并产生随机密码过程解析
Oct 08 Python
Python各种扩展名区别点整理
Feb 27 Python
python实现快递价格查询系统
Mar 03 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
Python txt文件常用读写操作代码实例
Aug 03 Python
在java中如何定义一个抽象属性示例详解
Aug 18 #Python
python中将函数赋值给变量时需要注意的一些问题
Aug 18 #Python
python中子类调用父类函数的方法示例
Aug 18 #Python
Python设计实现的计算器功能完整实例
Aug 18 #Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 #Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 #Python
对python中return和print的一些理解
Aug 18 #Python
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
php array的学习笔记
2012/05/10 PHP
thinkphp实现like模糊查询实例
2014/10/29 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
Yii调试查看执行SQL语句的方法
2016/07/15 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
js游戏人物上下左右跑步效果代码分享
2015/08/28 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
django 解决manage.py migrate无效的问题
2018/05/27 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
python使用matplotlib的savefig保存时图片保存不完整的问题
2021/01/08 Python
Carter’s OshKosh加拿大:购买婴幼儿服装和童装
2018/11/27 全球购物
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
初中美术教学反思
2014/01/29 职场文书
国庆节文艺活动方案
2014/02/03 职场文书
员工薪酬激励方案
2014/06/13 职场文书
企业员工集体活动方案
2014/08/17 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
实习生矿工检讨书
2014/10/13 职场文书
大一新生检讨书
2014/10/29 职场文书
家属慰问信
2015/02/14 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
Nginx快速入门教程
2021/03/31 Servers
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python
日本官方排名前10的动漫,名侦探柯南上榜,第一是一部创造历史的动漫
2022/03/18 日漫
docker-compose部署Yapi的方法
2022/04/08 Servers