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二叉树遍历的实现方法
Nov 21 Python
videocapture库制作python视频高速传输程序
Dec 23 Python
Python制作简单的网页爬虫
Nov 22 Python
在Python的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
Python实现的选择排序算法原理与用法实例分析
Nov 22 Python
Python iter()函数用法实例分析
Mar 17 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
Python Tornado批量上传图片并显示功能
Mar 26 Python
python如何读取.mtx文件
Apr 22 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
68行Python代码实现带难度升级的贪吃蛇
Jan 18 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注册审核重点解析(数据访问)
2017/05/23 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
javascript闭包的高级使用方法实例
2013/07/04 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
react-native 封装选择弹出框示例(试用ios&amp;android)
2017/07/11 Javascript
AngularJs 延时器、计时器实例代码
2017/09/16 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
javascript实现拼图游戏
2021/01/29 Javascript
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python图像常规操作
2017/11/11 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
python selenium 弹出框处理的实现
2019/02/26 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Python调用shell cmd方法代码示例解析
2020/06/18 Python
tensorflow基于CNN实战mnist手写识别(小白必看)
2020/07/20 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
vue路由实现登录拦截
2021/03/24 Vue.js
电子商务专业学生的学习自我评价
2013/10/27 职场文书
岗位职责的含义
2013/11/17 职场文书
旅游管理专业个人求职信范文
2013/12/24 职场文书
运动会广播稿300字
2014/01/10 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
幼师求职自荐信
2015/03/26 职场文书
保姆聘用合同
2015/09/21 职场文书
个人落户申请书怎么写?
2019/06/28 职场文书
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技