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找出文件中使用率最高的汉字实例详解
Jun 03 Python
深入理解python对json的操作总结
Jan 05 Python
Python Socket编程详细介绍
Mar 23 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python paramiko模块的使用示例
Apr 11 Python
对python 读取线的shp文件实例详解
Dec 22 Python
python跳出双层for循环的解决方法
Jun 24 Python
Django框架表单操作实例分析
Nov 04 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
scrapy redis配置文件setting参数详解
Nov 18 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解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
Input 特殊事件onpopertychange和oninput
2009/06/17 Javascript
JavaScript单元测试ABC
2012/04/12 Javascript
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
js对象内部访问this修饰的成员函数示例
2014/04/27 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
jquery绑定事件 bind和on的用法与区别分析
2020/05/22 jQuery
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
wxpython实现图书管理系统
2018/03/12 Python
Django rest framework实现分页的示例
2018/05/24 Python
python中的字符串内部换行方法
2018/07/19 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
Pycharm配置lua编译环境过程图解
2020/11/28 Python
怎样声明一个匿名的内部类
2016/06/01 面试题
环境工程专业自荐信范文
2014/03/18 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
岗位职责范本大全
2015/02/26 职场文书
大学生个人简历自我评价
2015/03/11 职场文书
2015年大学迎新工作总结
2015/07/16 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书
Python实现学生管理系统并生成exe可执行文件详解流程
2022/01/22 Python
漫画「古见同学有交流障碍症」第25卷封面公开
2022/03/21 日漫