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 ljust rjust center输出
Sep 06 Python
初步剖析C语言编程中的结构体
Jan 16 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 Python
Python内置函数——__import__ 的使用方法
Nov 24 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python 二维数组90度旋转的方法
Jan 28 Python
Python正则表达式和re库知识点总结
Feb 11 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
WxPython实现无边框界面
Nov 18 Python
Python3 shelve对象持久存储原理详解
Mar 23 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
Python必备技巧之字符数据操作详解
Mar 23 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
php强制用户转向www域名的方法
2015/06/19 PHP
Yii2 RESTful中api的使用及开发实例详解
2016/07/06 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
Javascript 获取字符串字节数的多种方法
2009/06/02 Javascript
jquery ready函数源代码研究
2009/12/06 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js控制href内容的连接内容的变化示例
2014/04/30 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
聊一聊JS中this的指向问题
2016/06/17 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
Python实现的ini文件操作类分享
2014/11/20 Python
Python中运行并行任务技巧
2015/02/26 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
python+selenium实现QQ邮箱自动发送功能
2019/01/23 Python
python中break、continue 、exit() 、pass终止循环的区别详解
2019/07/08 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
基于python实现从尾到头打印链表
2019/11/02 Python
学习python需要有编程基础吗
2020/06/02 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
利用Canvas模仿百度贴吧客户端loading小球的方法示例
2017/08/13 HTML / CSS
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
Guess美国官网:美国知名服装品牌
2019/04/08 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
销售主管岗位职责范本
2014/02/14 职场文书
幼儿园教师自我鉴定
2014/03/20 职场文书
mysql字段为NULL索引是否会失效实例详解
2022/05/30 MySQL