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 运算符 供重载参考
Jun 11 Python
使用PyCharm配合部署Python的Django框架的配置纪实
Nov 19 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
Jul 07 Python
wxPython的安装图文教程(Windows)
Dec 28 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
python dlib人脸识别代码实例
Apr 04 Python
Python计算一个点到所有点的欧式距离实现方法
Jul 04 Python
在Django中实现添加user到group并查看
Nov 18 Python
python [:3] 实现提取数组中的数
Nov 27 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
Python 通过监听端口实现唯一脚本运行方式
May 05 Python
Python实现定时监测网站运行状态的示例代码
Sep 30 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php feof用来识别文件末尾字符的方法
2010/08/01 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
2016/11/20 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
php中try catch捕获异常实例详解
2020/08/06 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
javascript 函数式编程
2007/08/16 Javascript
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
一个页面元素appendchild追加到另一个页面元素的问题
2013/01/27 Javascript
C#中使用迭代器处理等待任务
2015/07/13 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
npm全局环境变量配置详解
2020/12/15 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
Python使用chardet判断字符编码
2015/05/09 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
2020/07/03 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
跟单文员的岗位职责
2013/11/14 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
期中考试后的反思
2014/02/08 职场文书
爱心捐款倡议书
2014/04/14 职场文书
城管执法人员纪律作风整顿思想汇报
2014/09/13 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python