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网络编程 Python套接字编程
Sep 13 Python
Python进程间通信之共享内存详解
Oct 30 Python
Python smtplib实现发送邮件功能
May 22 Python
Django项目中用JS实现加载子页面并传值的方法
May 28 Python
Python 中的range(),以及列表切片方法
Jul 02 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
pandas中的series数据类型详解
Jul 06 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
python如何将两张图片生成为全景图片
Mar 05 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
python识别验证码的思路及解决方案
Sep 13 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php中ftp_chdir与ftp_cdup函数用法
2014/11/18 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
php用xpath解析html的代码实例讲解
2019/02/14 PHP
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
Extjs4 类的定义和扩展实例
2013/06/28 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
JS对字符串编码的几种方式使用指南
2015/05/14 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
在JavaScript中处理数组之reverse()方法的使用
2015/06/09 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
javascript下使用Promise封装FileReader
2016/02/19 Javascript
微信JS-SDK选取手机照片上传功能
2017/04/21 Javascript
微信小程序实现的贪吃蛇游戏【附源码下载】
2018/01/03 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
解决Element中el-date-picker组件不回填的情况
2020/11/07 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Python基础之列表常见操作经典实例详解
2020/02/26 Python
用css3制作纸张效果(外翻卷角)
2013/02/01 HTML / CSS
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
饭店工作计划书
2014/01/10 职场文书
生死抉择观后感
2015/06/09 职场文书
安全教育培训心得体会
2016/01/15 职场文书