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 相关文章推荐
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
Python中的list与tuple集合区别解析
Oct 12 Python
使用TensorFlow-Slim进行图像分类的实现
Dec 31 Python
python 爬取马蜂窝景点翻页文字评论的实现
Jan 20 Python
keras 如何保存最佳的训练模型
May 25 Python
python适合做数据挖掘吗
Jun 16 Python
keras中的History对象用法
Jun 19 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
Nov 19 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 Python
浅谈Python xlwings 读取Excel文件的正确姿势
Feb 26 Python
python代码实现备忘录案例讲解
Jul 26 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
jQuery实现列表的全选功能
2015/03/18 Javascript
基于javascript实现样式清新图片轮播特效
2016/03/30 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
2017/11/07 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
JavaScript函数重载操作实例浅析
2020/05/02 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
python基于socket实现网络广播的方法
2015/04/29 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
python匿名函数用法实例分析
2019/08/03 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
Python基于locals返回作用域字典
2020/10/17 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
HTML5的postMessage的使用手册
2018/12/19 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
酒店人事专员岗位职责
2013/12/19 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
中药学专业求职信
2014/05/31 职场文书
2014高考励志标语
2014/06/05 职场文书
影视后期实训报告
2014/11/05 职场文书
实操Python爬取觅知网素材图片示例
2021/11/27 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
python中pd.cut()与pd.qcut()的对比及示例
2022/06/16 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技