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

1. read() 接口的问题

f =open(filename, 'rb')

f.read()

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

MemoryError

...

也即会发生内存溢出。

2. 解决方案:转换接口

(1)readlines() :读取全部的行,构成一个 list,实践表明还是会造成内存的问题;

forline inf.reanlines():

...

(2)readline():每次读取一行,

(3)read(1024):重载,指定每次读取的长度

3. 真正 Pythonic 的方法

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

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

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

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

  1. 【Python中的权限错误:无法访问文件】-- 解决方案

    [Python中的权限错误:无法访问文件]-- 解决方案 在Python编程过程中,我们常常会遇到文件读写.创建.删除等操作.有时候当我们试图进行这些操作时,会出现"PermissionEr ...

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

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

  3. python读取大文件性能_强悍的Python读取大文件的解决方案

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

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

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

  5. python读取大文件太慢_强悍的Python读取大文件的解决方案

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

  6. python中删除某一行_python 删除大文件中的某一行(最有效率的方法)

    用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比如GB级别的文本时,这种方法不仅需要占用很大内存,而且 ...

  7. python里split以制表符分隔_在python中拆分以制表符分隔的大文件

    好吧,我试着按照你的准则来做.它只在大文件中迭代一次,不必费心通过csv模块解析这些行,因为您只是在写入期间重新连接它们.在id=("a","b") start ...

  8. python中xml解析sax_Python解析xml大文件[sax]

    使用到的包:xml.sax [文档]() 需求 读取xml数据文件,文件较大,需要实时处理插入到数据库 xml文档 100000 男 北京,海淀区 437 1989 333 242 null 大学 1 ...

  9. python中mopn,是否可以使用python创建dymola模型(.mo)?

    正如matth所指出的,最干净的方法可能是使用模板引擎. 但首先,简单的python字符串格式也可以.在 但是,问题或多或少是复杂的,这取决于您是要更新现有模型的一部分,还是只是从头开始创建新模型.在 ...

最新文章

  1. datatables插件AJAX请求数据报错Uncaught TypeError: Cannot read property ‘length‘ of undefined
  2. html的数据类型有哪些,数据库数据类型有哪些
  3. 使用php语言 统计字符串,php如何查询字符串长度
  4. 退出所有循环_探索未知种族之osg类生物---呼吸分解之事件循环三
  5. mysql 注释几种方法
  6. 【SQL Server】SQL2005的安装与配置、简单使用
  7. 冰雪传奇刷怪计时器_冰雪传奇BOSS计时器
  8. DTU接入ZWS云的通信协议
  9. 小米路由器4刷机说明(openwrt-21.02.1)
  10. 北京智能机器人为游客指路;日本研发出可识别背影的人工智能
  11. 物联网的媒介——java usb串口通信
  12. 阿拉伯数字小写金额转换成中文大写金额C程序说明
  13. no algorithm found for: 08000000h - 0800275bhno algorithm found for: 08000000h - XXXXXXXXH
  14. 亚马逊Dash永久下架:智能购物按钮究竟犯了什么错?
  15. 用计算机处理表格说课稿,信息技术《电子表格的特点及应用》的说课稿
  16. overflow:auto自动滚动到底部(vue)
  17. 读取二代身份证号,做个记录
  18. python svg转png_如何使用Python3实现svg转png与pdf(附转换源代码)
  19. BZOJ3837 : [Pa2013]Filary
  20. Python3中的多态 ,鸭子类型

热门文章

  1. 计算机英语讲课笔记(2020-6-23)
  2. Flask学习笔记02:实现用户登录功能
  3. 【BZOJ3609】人人尽说江南好,博弈
  4. 【BZOJ3601】一个人的数论,莫比乌斯反演+高斯消元
  5. 【codevs2452】【SCOI2005】【BZOJ1088】扫雷Mine
  6. 提出邀请Do you want..._43
  7. python向量化编程技巧_Python学习(六)向量化
  8. 2017.10.6 单词 思考记录
  9. 【英语学习】【WOTD】two-bit 释义/词源/示例
  10. Pentium II Pentium III架构/微架构/流水线 (4) - P6详解 - 高速缓存/Store Buffers