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 03 Python
Python3实现并发检验代理池地址的方法
Sep 18 Python
tensorflow实现图像的裁剪和填充方法
Jul 27 Python
强悍的Python读取大文件的解决方案
Feb 16 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Python 实例方法、类方法、静态方法的区别与作用
Aug 14 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
python中seaborn包常用图形使用详解
Nov 25 Python
python画图常规设置方式
Mar 05 Python
python为QT程序添加图标的方法详解
Mar 09 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 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实现下载限制速度示例分享
2014/02/13 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
基于jQuery UI CSS Framework开发Widget的经验
2010/08/21 Javascript
javascript自然分类法算法实现代码
2013/10/11 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
NodeJS有难度的面试题(能答对几个)
2019/10/09 NodeJs
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
Python类属性的延迟计算
2016/10/22 Python
简述Python2与Python3的不同点
2018/01/21 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
HTML5 3D书本翻页动画的实现示例
2019/08/28 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
求职信的最佳写作思路
2014/02/01 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
助理政工师申报材料
2014/06/03 职场文书
自我查摆剖析材料
2014/10/11 职场文书
个人作风纪律整顿整改措施
2014/10/25 职场文书
毕业实习计划书
2015/01/16 职场文书
离婚上诉状范文
2015/05/23 职场文书
升学宴学生致辞
2015/07/27 职场文书
外出学习心得体会范文
2016/01/18 职场文书
java代码实现空间切割
2022/01/18 Java/Android
python如何将mat文件转为png
2022/07/15 Python