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使用cx_Oracle模块将oracle中数据导出到csv文件的方法
May 16 Python
Python算术运算符实例详解
May 31 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
Python迭代器与生成器用法实例分析
Jul 09 Python
解决python3 Pycharm上连接数据库时报错的问题
Dec 03 Python
详解python selenium 爬取网易云音乐歌单名
Mar 28 Python
Django页面数据的缓存与使用的具体方法
Apr 23 Python
Python3.0 实现决策树算法的流程
Aug 08 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
Python 合并拼接字符串的方法
Jul 28 Python
提取视频中的音频 Python只需要三行代码!
May 10 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/10 PHP
zf框架的校验器使用使用示例(自定义校验器和校验器链)
2014/03/13 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
jQuery 的全选(全非选)即取得被选中的值使用介绍
2013/11/12 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
jquery日历插件datepicker用法分析
2016/01/22 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
Vue 设置axios请求格式为form-data的操作步骤
2019/10/29 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
详解ES6 中的Object.assign()的用法实例代码
2021/01/11 Javascript
python中sets模块的用法实例
2014/09/30 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
python图片剪裁代码(图片按四个点坐标剪裁)
2020/03/10 Python
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
一套软件测试笔试题
2014/07/25 面试题
中学生英语演讲稿
2014/04/26 职场文书
力学专业求职信
2014/07/23 职场文书
机关中层领导干部群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
县政府班子个人对照检查材料
2014/10/05 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python
Python OpenCV形态学运算示例详解
2022/04/07 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS