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 api锁定计算机示例
Apr 17 Python
Python编写检测数据库SA用户的方法
Jul 11 Python
Python的Django框架中的Context使用
Jul 15 Python
Python开发如何在ubuntu 15.10 上配置vim
Jan 25 Python
python中requests库session对象的妙用详解
Oct 30 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
Django集成CAS单点登录的方法示例
Jun 10 Python
wxPython实现带颜色的进度条
Nov 19 Python
python使用pip安装SciPy、SymPy、matplotlib教程
Nov 20 Python
python怎么判断模块安装完成
Jun 19 Python
Python函数中的不定长参数相关知识总结
Jun 24 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 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
统计出现最多的字符次数的js代码
2010/12/03 Javascript
JS获取url链接字符串 location.href
2013/12/23 Javascript
查找Oracle高消耗语句的方法
2014/03/22 Javascript
触屏中的JavaScript事件分析
2015/02/06 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
angularjs实现天气预报功能
2020/06/16 Javascript
node.js基础知识小结
2018/02/26 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
Postman无法正常返回结果问题解决
2020/08/28 Javascript
Ant Design Vue table中列超长显示...并加提示语的实例
2020/10/31 Javascript
python求crc32值的方法
2014/10/05 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python如何更新包
2020/06/11 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
入团者的自我评价分享
2013/12/02 职场文书
酒店前厅员工辞职信
2014/01/08 职场文书
公司薪酬管理制度
2014/01/31 职场文书
通用自荐信范文
2014/03/14 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
安装工程师岗位职责
2015/02/13 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
2019大学生暑期实习心得总结
2019/08/21 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle