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:

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

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

Reference

总结

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

python读取大文件-强悍的Python读取大文件的解决方案相关推荐

  1. python读取超大文件-强悍的Python读取大文件的解决方案

    Python 环境下文件的读取问题,请参见拙文 Python基础之文件读取的讲解 这是一道著名的 Python 面试题,考察的问题是,Python 读取大文件和一般规模的文件时的区别,也即哪些接口不适 ...

  2. python按行读取文件效率高吗_Python按行读取文件的实现方法【小文件和大文件读取】...

    本文实例讲述了Python按行读取文件的实现方法.分享给大家供大家参考,具体如下: 小文件: #coding=utf-8 #author: walker #date: 2013-12-30 #func ...

  3. python读取大文件csv_python 快速把超大txt文件转存为csv的实例

    python 快速把超大txt文件转存为csv的实例 今天项目有个需求,就是把txt文件转为csv,txt之间是空格隔开,转为csv时需要把空格转换为逗号,网上找的一个版本,只需要三行代码,特别犀利: ...

  4. python读取hdf-eos5数据_《Python和HDF 5大数据应用》——2.4 你的第一个HDF5文件-阿里云开发者社区...

    本节书摘来自异步社区<Python和HDF 5大数据应用>一书中的第2章,第2.4节,作者[美]Andrew Collette(科莱特),胡世杰 译,更多章节内容可以访问云栖社区" ...

  5. python读取大文件csv_对python中大文件的导入与导出方法详解

    1.csv文件的导入和导出 通过一个矩阵导出为csv文件,将csv文件导入为矩阵 将csv文件导入到一个矩阵中 import numpy my_matrix = numpy.loadtxt(open( ...

  6. python用os.system打开wav文件_使用python读取wav格式文件

    ** 使用python读取wav格式文件 ** - 基本概念 [采样频率] 即取样频率, 指每秒钟取得声音样本的次数.采样频率越高,声音的质量也就越好,声音的还原也就越真实,但同时它占的资源比较多.由 ...

  7. c++读取utf8文件_【Python】File文件对象

    open()方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() ...

  8. python读取文件模式_python如何读取文件的数据

    使用 read() 函数读取文件时,如果文件过大,则一次读取全部内容到内存,容易造成内存不足,而相比每次限制读取字符(或字节)的个数,更推荐大家使用逐行读取文件的方式.一般情况下,逐行读取只适用于以文 ...

  9. python如何读写文件-python文件的写入和读取

    1.txt,xls,doc等文件的使用 f=open("filename","w") 打开一个用于写入的文件,要写入内容时使用f.write("内容& ...

最新文章

  1. zabbix 概念理解
  2. C++ STL: lower_bound 和 upper_bound
  3. 伟大公司为什么都考核价值观?
  4. cdr文件过大导出pdf打不开_PDF快速导出JPG对应的分辨率技巧
  5. lpc1768的gpio库函数_LPC1768之GPIO流水灯的实验例程
  6. JSONArray传值的使用小结
  7. 如何修改WAMP中mysql默认空密码重新登录phpmyadmin
  8. Ambari安装之安装并配置Ambari-server(三)
  9. 已经安装mysql xampp_windows 7 本机已安装mysql5的情况上 安装XAMPP
  10. ajax一直返回 error
  11. 3dmax 保存慢 卡死
  12. 自己动手写网络爬虫(第一天)
  13. bitbucket搭建
  14. 快速拿下CKA认证考试,这些要求和tips你得知道
  15. ubuntu 20.04 安装软件踩坑
  16. maven打包时本地的jar包打不进去
  17. 一键训练 deeplabv3seg、squeezeseg、voxelnet Docker镜像安装
  18. JavaSE--IO流
  19. undefined reference to 'floor'/undefined reference to
  20. 图片懒加载是怎么实现的?如何实现图片懒加载?

热门文章

  1. 我的第一个React Native App
  2. myeclipse定位代码文件位置
  3. Codeforces Round #316 (Div. 2) D. Tree Requests dfs序
  4. 数据结构和算法系列5 七大排序之冒泡排序和快速排序
  5. 11.6 如何使用内嵌资源类(ResourceRetriever)?
  6. SPA单页应用前后分离微信授权
  7. sql中Cast()函数的用法
  8. python---基础知识回顾(五)(python2.7和python3.5中的编码)
  9. 【BZOJ1086】[SCOI2005]王室联邦 树分块
  10. What you should know about .so files