Python基于read(size)方法读取超大文件

 更新时间:2020年03月12日 11:44:11   作者:我太难了008  
这篇文章主要介绍了Python基于read(size)方法读取超大文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

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如何爬取个性签名

    这篇文章主要为大家详细介绍了pythonx抓取个性签名的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 使用ChatGPT来自动化Python任务

    使用ChatGPT来自动化Python任务

    这篇文章主要介绍了使用ChatGPT来自动化Python任务的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python爬取当当、京东、亚马逊图书信息代码实例

    Python爬取当当、京东、亚马逊图书信息代码实例

    这篇文章主要介绍了Python爬取当当、京东、亚马逊图书信息代码实例,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • 一文教你用Python中progress库实现进度条

    一文教你用Python中progress库实现进度条

    这篇文章主要为大家详细介绍了如何通过Python中的progress库实现进度条的绘制,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • 详解Python装饰器之@property

    详解Python装饰器之@property

    今天带大家学习python装饰器的相关知识,文中对Python @property做了非常详细的介绍,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • 一文教你解决所有Python中文乱码问题

    一文教你解决所有Python中文乱码问题

    我们在编写代码时总是遇到各种中文乱码的问题,所以本文就来为大家总结一下遇到的中文乱码问题和对应的解决方案,以及为什么会出现中文乱码的问题,希望对大家有所帮助
    2023-12-12
  • python如何通过protobuf实现rpc

    python如何通过protobuf实现rpc

    这篇文章主要为大家详细介绍了python通过protobuf实现rpc的方法,感兴趣的朋友可以参考一下
    2016-03-03
  • python 模块导入问题汇总

    python 模块导入问题汇总

    在本篇文章里小编给大家整理的是一篇关于python 模块导入问题汇总内容,有需要的朋友们可以学习参考下。
    2021-02-02
  • Python基于TCP实现会聊天的小机器人功能示例

    Python基于TCP实现会聊天的小机器人功能示例

    这篇文章主要介绍了Python基于TCP实现会聊天的小机器人功能,结合实例形式分析了Python通过socket模块实现TCP连接的客户端与服务器端模拟聊天机器人功能相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python用类实现扑克牌发牌的示例代码

    Python用类实现扑克牌发牌的示例代码

    这篇文章主要介绍了Python用类实现扑克牌发牌的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论