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基于windows平台锁定键盘输入的方法
Mar 05 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
在Python中操作字符串之rstrip()方法的使用
May 19 Python
Django中间件实现拦截器的方法
Jun 01 Python
python连接mongodb密码认证实例
Oct 16 Python
python 阶乘累加和的实例
Feb 01 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
Aug 05 Python
基于python3监控服务器状态进行邮件报警
Oct 19 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
Django通过json格式收集主机信息
May 29 Python
python脚本第一行如何写
Aug 30 Python
Python基础之条件语句详解
Jun 16 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中文件上传的安全问题
2006/10/09 PHP
PHP学习笔记 IIS7下安装配置php环境
2012/10/29 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
解析dom中的children对象数组元素firstChild,lastChild的使用
2013/07/10 Javascript
javaScript NameSpace 简单说明介绍
2013/07/18 Javascript
jquery操作checked属性以及disabled属性的多种方法
2014/06/20 Javascript
jQuery 实现自动填充邮箱功能(带下拉提示)
2014/10/14 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
2015/07/05 Javascript
jquery中实现时间戳与日期相互转换
2016/04/12 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
angular1配合gulp和bower的使用教程
2018/01/19 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Python编程把二叉树打印成多行代码
2018/01/04 Python
python破解zip加密文件的方法
2018/05/31 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
印尼网上商店:Alfacart.com
2019/03/11 全球购物
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
抽象类和接口的区别
2012/09/19 面试题
个人素质的自我评价分享
2013/12/16 职场文书
购房意向书范本
2014/04/01 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
总经理聘用协议书
2015/09/21 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
Python jiaba库的使用详解
2021/11/23 Python
苹果macOS 13开发者预览版Beta 8发布 正式版10月发布
2022/09/23 数码科技