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统计文件行数示例分享
Feb 21 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
python教程之用py2exe将PY文件转成EXE文件
Jun 12 Python
基于Python实现通过微信搜索功能查看谁把你删除了
Jan 27 Python
Python教程之全局变量用法
Jun 27 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
Python 25行代码实现的RSA算法详解
Apr 10 Python
pytorch训练imagenet分类的方法
Jul 27 Python
Python装饰器用法实例分析
Jan 14 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
python获得命令行输入的参数的两种方式
Nov 02 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 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计划任务、定时执行任务的实现代码
2011/04/23 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
php在线代理转向代码
2012/05/05 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
2015/10/09 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
JavaScript实现倒计时跳转页面功能【实用】
2016/12/13 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
Python中使用异常处理来判断运行的操作系统平台方法
2015/01/22 Python
python操作ie登陆土豆网的方法
2015/05/09 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python socket实现简单聊天室
2018/04/01 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
CSS3制作炫酷的自定义发光文字
2016/03/28 HTML / CSS
CSS3 分类菜单效果
2019/05/27 HTML / CSS
有原因的手表:Flex Watches
2019/03/23 全球购物
Java中实现多态的机制
2015/08/09 面试题
学生个人的自我评价分享
2013/11/05 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
故宫英文导游词
2015/01/31 职场文书
寒山寺导游词
2015/02/03 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
2015年检验科工作总结
2015/04/27 职场文书
教师听课学习心得体会
2016/01/15 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
如何理解Vue前后端数据交互与显示
2021/05/10 Vue.js
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫