强悍的Python读取大文件的解决方案

 更新时间:2019年02月16日 15:19:02   作者:Inside_Zhang  
今天小编就为大家分享一篇关于强悍的Python读取大文件的解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解

这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适合读取大文件。

1. read() 接口的问题

f = open(filename, 'rb')
f.read()

我们来读取 1 个 nginx 的日至文件,规模为 3Gb 大小。read() 方法执行的操作,是一次性全部读入内存,显然会造成:

MemoryError
...

也即会发生内存溢出。

2. 解决方案:转换接口

  • (1)readlines() :读取全部的行,构成一个 list,实践表明还是会造成内存的问题;
for line in f.reanlines():
  ...
  • (2)readline():每次读取一行,
while True:
  line = f.readline()
  if not line:
    break
  • (3)read(1024):重载,指定每次读取的长度
while True:
  block = f.read(1024)
  if not block:
    break

3. 真正 Pythonic 的方法

真正 Pythonci 的方法,使用 with 结构:

with open(filename, 'rb') as f:
  for line in f:
    <do something with the line>

对可迭代对象 f,进行迭代遍历:for line in f,会自动地使用缓冲IO(buffered IO)以及内存管理,而不必担心任何大文件的问题。

There should be one – and preferably only one – obvious way to do it.

Reference

How to read large file, line by line in python

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • Django python雪花算法实现方式

    Django python雪花算法实现方式

    在Django项目中添加自定义模块或应用来封装雪花算法,步骤包括创建应用,编写算法实现代码至utils.py文件,及配置settings.py,此方法可方便在项目中随处调用雪花算法,适用于需要唯一ID生成的场景
    2024-09-09
  • Python使用PyQt快速搭建桌面应用的完整指南

    Python使用PyQt快速搭建桌面应用的完整指南

    在Python生态中,PyQt凭借其跨平台特性、丰富的控件库和成熟的开发模式,成为桌面应用开发的首选框架之一,本文将以实战为导向,通过具体案例拆解开发流程,帮助开发者快速掌握PyQt的核心技巧
    2025-09-09
  • Python configparser模块配置文件过程解析

    Python configparser模块配置文件过程解析

    这篇文章主要介绍了Python configparser模块配置文件过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python pymongo模块常用操作分析

    Python pymongo模块常用操作分析

    这篇文章主要介绍了Python pymongo模块常用操作,结合实例形式分析了pymongo模块的导入、连接MongoDB数据以及插入、更新、删除、查询等操作相关实现技巧,需要的朋友可以参考下
    2018-09-09
  • 对django 模型 unique together的示例讲解

    对django 模型 unique together的示例讲解

    今天小编就为大家分享一篇对django 模型 unique together的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • 使用Python实现一个本地视频流媒体服务器

    使用Python实现一个本地视频流媒体服务器

    你是否曾经想过在本地网络上轻松地将电脑上的视频分享给手机或平板电脑观看?也许你下载了一部电影,想在客厅的智能电视上播放,却不想费力地拷贝文件,今天,小编将给大家介绍如何使用Python构建一个简单的本地视频流媒体服务器,需要的朋友可以参考下
    2025-04-04
  • Python中的枚举函数enumerate()的具体用法

    Python中的枚举函数enumerate()的具体用法

    本文主要介绍了Python中的枚举函数enumerate()的具体用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python3爬虫学习入门教程

    Python3爬虫学习入门教程

    这篇文章主要介绍了Python3爬虫学习入门,简单介绍了Python3爬虫的功能、原理及使用爬虫爬取知乎首页相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • Python中scatter散点图及颜色整理大全

    Python中scatter散点图及颜色整理大全

    python自带的scatter函数参数中颜色和大小可以输入列表进行控制,即可以让不同的点有不同的颜色和大小,下面这篇文章主要给大家介绍了关于Python中scatter散点图及颜色整理大全的相关资料,需要的朋友可以参考下
    2023-05-05
  • K近邻法(KNN)相关知识总结以及如何用python实现

    K近邻法(KNN)相关知识总结以及如何用python实现

    这篇文章主要介绍了K近邻法(KNN)相关知识总结以及如何用python实现,帮助大家更好的利用python实现机器学习,感兴趣的朋友可以了解下
    2021-01-01

最新评论