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将xml xsl文件生成html文件存储示例讲解
Dec 03 Python
利用Python自动监控网站并发送邮件告警的方法
Aug 24 Python
Python利用matplotlib生成图片背景及图例透明的效果
Apr 27 Python
python实现rsa加密实例详解
Jul 19 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
Python 字符串换行的多种方式
Sep 06 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
关于python导入模块import与常见的模块详解
Aug 28 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
Pycharm中import torch报错的快速解决方法
Mar 05 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输出1000以内质数(素数)示例
2014/02/16 PHP
PHP使用反射机制实现查找类和方法的所在位置
2016/04/22 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
使用Node.js实现HTTP 206内容分片的教程
2015/06/23 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
详解Vue串联过滤器的使用场景
2020/04/30 Javascript
python with statement 进行文件操作指南
2014/08/22 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python中getattr函数和hasattr函数作用详解
2016/06/14 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
详解python做UI界面的方法
2019/02/27 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
详解HTML5中div和section以及article的区别
2015/07/14 HTML / CSS
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
教师申诉制度
2014/01/29 职场文书
工伤赔偿协议书
2014/04/15 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
高二学生评语大全
2014/04/25 职场文书
感谢信怎么写
2015/01/21 职场文书
销售经理岗位职责
2015/01/31 职场文书
2015年全国爱眼日活动方案
2015/05/05 职场文书
劳动保障事务所个人工作总结
2015/08/12 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python