Python基于read(size)方法读取超大文件


Posted in Python onMarch 12, 2020

pyhon读取文件很方便,但是,如果文件很大,而且还是一行文件,那就蛋疼了. 不过还好有read(size)方法,这个方法就是每次读取size大小的数据到内存中

下面来个示例

def readlines(f, separator):
  '''
  读取大文件方法
  :param f:  文件句柄
  :param separator:  每一行的分隔符
  :return:
  '''
  buf = ''
  while True:
    while separator in buf:
      position = buf.index(separator) # 分隔符的位置
      yield buf[:position] # 切片, 从开始位置到分隔符位置
      buf = buf[position + len(separator):] # 再切片,将yield的数据切掉,保留剩下的数据

    chunk = f.read(4096) # 一次读取4096的数据到buf中
    if not chunk: # 如果没有读到数据
      yield buf # 返回buf中的数据
      break # 结束
    buf += chunk # 如果read有数据 ,将read到的数据加入到buf中


with open('text.txt',encoding='utf-8') as f:
  for line in readlines(f,'|||'):
    # 为什么readlines函数能够使用for循环遍历呢, 因为这个函数里面有yield关键字呀, 有它就是一个生成器函数 ......
    print(line)

测试文件text.txt

fgshfsljflsjfls|||fyhdiyfdfhn|||fudofdb钦铁杆jdlfdl|||tedsthfdskfdk

打印结果

fgshfsljflsjfls
fyhdiyfdfhn
fudofdb钦铁杆jdlfdl
tedsthfdskfdk

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中绑定与未绑定的类方法用法分析
Apr 29 Python
Python文件操作之合并文本文件内容示例代码
Sep 19 Python
Python实现简单求解给定整数的质因数算法示例
Mar 25 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
Sep 25 Python
python使用suds调用webservice接口的方法
Jan 03 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
Django实现后台上传并显示图片功能
May 29 Python
Python中pass的作用与使用教程
Nov 13 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
基于Python实现nc批量转tif格式
Aug 14 Python
Python函数生成器原理及使用详解
Mar 12 #Python
python deque模块简单使用代码实例
Mar 12 #Python
python中安装django模块的方法
Mar 12 #Python
python3 sorted 如何实现自定义排序标准
Mar 12 #Python
Python dict和defaultdict使用实例解析
Mar 12 #Python
Python数据结构dict常用操作代码实例
Mar 12 #Python
Python基于类路径字符串获取静态属性
Mar 12 #Python
You might like
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
php面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
thinkphp3查询mssql数据库乱码解决方法分享
2014/02/11 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
Javascript 实用小技巧
2010/04/07 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
屏蔽script注入小例子
2013/11/12 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
2017/01/23 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
使用Angular CLI生成 Angular 5项目教程详解
2018/03/18 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
vue自定义指令用法经典实例小结
2019/03/16 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
vant时间控件使用方法详解
2020/12/24 Javascript
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Django实现登录随机验证码的示例代码
2018/06/20 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python将string转换到float的实例方法
2019/07/29 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
Top Villas美国:豪华别墅出租和度假屋
2018/07/10 全球购物
事业单位个人应聘自荐信
2013/09/21 职场文书
会计毕业生自荐信
2013/11/21 职场文书
公司门卫岗位职责
2014/03/15 职场文书
关于建议书的格式范文
2014/05/20 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
个人向公司借款协议书
2014/10/09 职场文书
大学生学习新党章思想汇报
2014/10/25 职场文书
三好学生主要事迹怎么写
2015/11/03 职场文书
用python实现监控视频人数统计
2021/05/21 Python