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使用urllib2模块获取gravatar头像实例
Dec 18 Python
Python对小数进行除法运算的正确方法示例
Aug 25 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
python利用pandas将excel文件转换为txt文件的方法
Oct 23 Python
树莓派实现移动拍照
Jun 22 Python
django如何自己创建一个中间件
Jul 24 Python
PyQt5实现暗黑风格的计时器
Jul 29 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
python 高阶函数简单介绍
Feb 19 Python
Python使用openpyxl复制整张sheet
Mar 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中使用正则表达式进行查找替换
2013/06/13 PHP
PHP编写简单的App接口
2016/08/28 PHP
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
vuejs实现ready函数加载完之后执行某个函数的方法
2018/08/31 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
在vue中使用Echarts画曲线图的示例
2020/10/03 Javascript
js实现简单的轮播图效果
2020/12/13 Javascript
Python基于PycURL实现POST的方法
2015/07/25 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
python和flask中返回JSON数据的方法
2018/03/26 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python爬虫之模拟登陆csdn的实例代码
2018/05/18 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
python:解析requests返回的response(json格式)说明
2020/04/30 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Scrapy 配置动态代理IP的实现
2020/09/28 Python
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
本科生职业生涯规划书范文
2014/01/21 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
取保候审保证书
2014/04/30 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
答谢词范文
2015/01/05 职场文书
认识实习感想
2015/08/10 职场文书