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 相关文章推荐
CentOS中升级Python版本的方法详解
Jul 10 Python
Python时间戳使用和相互转换详解
Dec 11 Python
python如何把嵌套列表转变成普通列表
Mar 20 Python
Python实现基于POS算法的区块链
Aug 07 Python
python随机数分布random测试
Aug 27 Python
Python字符串的常见操作实例小结
Apr 08 Python
python实现KNN分类算法
Oct 16 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
详解pyinstaller生成exe的闪退问题解决方案
Jun 19 Python
python爬取天气数据的实例详解
Nov 20 Python
Python控制鼠标键盘代码实例
Dec 08 Python
python wsgiref源码解析
Feb 06 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
如何在Ubuntu下启动Apache的Rewrite功能
2013/07/05 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
js选项卡的实现方法
2015/02/09 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
js实现文字截断功能
2016/09/14 Javascript
jQuery简单倒计时效果完整示例
2016/09/20 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
详解JavaScript类型判断的四种方法
2020/10/21 Javascript
Element el-button 按钮组件的使用详解
2021/02/01 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
3个用于数据科学的顶级Python库
2018/09/29 Python
Python的垃圾回收机制详解
2019/08/28 Python
python tkinter之 复选、文本、下拉的实现
2020/03/04 Python
python简单实现9宫格图片实例
2020/09/03 Python
python使用selenium爬虫知乎的方法示例
2020/10/28 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
什么情况下你必须要把一个类定义为abstract的
2013/01/06 面试题
Linux文件系统类型
2012/09/16 面试题
Linux开机引导的步骤是什么
2015/10/19 面试题
大学生求职中的自我评价
2013/10/01 职场文书
自荐信包含哪些内容
2013/10/30 职场文书
硕士研究生自我鉴定范文
2013/12/27 职场文书
社区活动总结报告
2014/05/05 职场文书
2015年幼儿园卫生保健工作总结
2015/05/12 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python