先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作。做了很多的尝试,最终看到了如下的文章。

该文章实际上提供了集中读取大文件的方式,先经过测试总结如下

1. for line in fileHandle:

该方式是最快速的。而且python虚拟机在内部帮助我们对buffer进行管理,内存占用量小,且不差错。

2. fileinput方式

该方式实际效果较慢,但是也有buffer管理功能

3. (自己摸索和尝试的)使用file.read(sizeHint)的方式进行区块读取

该方法是三者中最慢的,而且需要自己去控制内存和选择需要的区域,所以在读到的buffer之后,还需要进行拆分工作,比较麻烦,而且容易出错。最无奈的是,使用下来(我的环境是2.6和2.7),sizeHint作用较小,原来觉得如果sizeHint是1024,则每次在内存中只会驻留1024B的内容,但是实际上不是这样的,在度过一次1024B之后,再次读取1024B的时候,尽管已经对之前的buf进行了del操作,但是该1024B仍然存留于内存中,所以内存越吃越大,最终MemoryError。

4. file.readline和file.readlines

和read类似,只适用于小文件。

结论:

在使用python进行大文件读取时,应该返璞归真,使用最简单的方式,交给解释器,就管好自己的工作就行了。

附,实测数据(这里的数据是我的程序的实际运行情况,在程序中其实读了两个差不多大小的文件,并做了一定逻辑处理,所以绝对值是没有意义的,但是相对比较值很能够说明情况)

1. 大文件(>1.4G)

所使用的方式

size_hint

所使用时间

for i in open(...)

/

103.382492s

fileinput

/

131.525755s

file.read和buffer控制

2亿B

报错:memoryError

2. 小文件(西游记的txt,大约1.4M)

所使用的方式

size_hint

所使用时间

for i in open(...)

/

2.11s

fileinput

/

4.22s

file.read和buffer控制

2亿B

4.07s

python怎么读文件后删去空格以行为单位进行排序-python 大文件以行为单位读取方式比对...相关推荐

  1. python怎么读文件后删去空格以行为单位进行排序-文件操作

    day15回顾 迭代器 iter(iterable) 返回迭代器 next(iterator) 返回可迭代对象提供的数据,当没有数据时触发StopIteration异常通知 生成器: 两种: 生成器函 ...

  2. python csv 大文件_Python性能调优:JSON到CSV,大文件

    一位同事要求我将"yelp数据集挑战"中的6个大文件从"扁平"的常规JSON转换为CSV(他认为这些文件看起来像有趣的教学数据). 我想我可以用: 1 2 3 ...

  3. python断点续传下载_Python 3 爬虫|第12章:并发下载大文件 支持断点续传

    1. stream 流式下载大文件 1.1 stream=True 和 iter_content() 我们将继续使用 Python 3 爬虫|第3章:同步阻塞下载 所搭建的测试环境,在 Nginx 默 ...

  4. php 超过100m文件上传,科技常识:apache+php上传大文件以上传100M为例

    科技常识:apache+php上传大文件以上传100M为例 2021-03-19 18:54:57 今天小编跟大家讲解下有关apache+php上传大文件以上传100M为例 ,相信小伙伴们对这个话题应 ...

  5. 大文件分片上传前端框架_无插件实现大文件分片上传,断点续传

    文件上传.gif 1. 简介: 本篇文章基于实际项目的开发,将介绍项目中关于大文件分片上传.文件验证.断点续传.手动重试上传等需求的使用场景及实现: 2. 项目需求 在一个音视频的添加中,既要有音视频 ...

  6. ssm上传文件进度条_SSM框架+Plupload实现分块上传大文件示例

    关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了.Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务 ...

  7. java写入excel文件内存不足,java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架...

    产品需求 产品经理需要导出一个页面的所有的信息到 EXCEL 文件. 需求分析 对于 excel 导出,是一个很常见的需求. 最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件. 客 ...

  8. mysql数据文件有10g_百万行mysql数据库优化和10G大文件上传方案

    最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个mysql而已. 问题1:针对MySQL Comm ...

  9. linux 中将文件设置密码,linux – 如何使用公钥在openssl中加密大文件

    如何使用公钥加密大文件,以便没有人除了拥有私钥的人能够解密? 我可以使RSA公钥和私钥,但当涉及到使用此命令加密大文件: openssl rsautl -encrypt -pubin -inkey p ...

最新文章

  1. DeepChem | Windows 10下anaconda3环境从源码构建并安装deepchem
  2. COND SWITCH 操作符
  3. 神策学堂“训练营+特训营”,种子学员招募中,来一起出圈呀!
  4. 考研英语核心词汇辨析(黑魔方系列2007版之十二)
  5. You get a dream...you gotta protect it.
  6. python 字符串格式化语法_Python基础语法--字符串格式化
  7. RabbitMQ (一) MQ介绍以Linux下RabbitMq环境安装
  8. ajax代码原理,关于Ajax的原理以及代码封装详解
  9. 基于python的性能测试工具_基于 Python 的性能测试工具 locust 与 LR 的简单对比[转发]...
  10. oracle学习笔记之pI/sql视频小结
  11. Problem C: 哈夫曼树
  12. 不懂技术的小白,使用电商网站建设工具有什么注意事项?
  13. 谷歌浏览器设置信任_Win10谷歌浏览器添加信任网址/站点的方法
  14. 贪心科技机器学习训练营(二)
  15. vscode :code runner运行include多个文件的cpp
  16. 招聘人员最喜欢问的问题有哪些
  17. python在abaqus中的应用pdf_Python语言在Abaqus中的应用
  18. java华容道代码_Java 华容道完整源码
  19. android 服务检测,Android检测某个服务是否还活着代码
  20. 基于单片机c语言的豆浆机,基于单片机的全自动豆浆机控制系统设计.doc

热门文章

  1. 手机桌面隐藏大师_受够了内置主题?扒一扒Windows 10隐藏主题
  2. 服务器发消息给所有人,我需要服务器向所有客户端(Python、sockets)发送消息...
  3. python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
  4. 怎样开启mysql慢检查_如何开启mysql的慢查询
  5. hive的条件查询语句_[一起学Hive]之九-Hive的查询语句SELECT
  6. 从零学习 vim 一个多月, 感觉最有用的三个教程
  7. 开发日记-201909024 关键词 linux基础
  8. go语言笔记——go是有虚拟机runtime的,不然谁来做GC呢,总不会让用户自己来new和delete进行内存管理吧,还有反射!Go 的 runtime 嵌入到了每一个可执行文件当中...
  9. Nginx 配置https 自动续期
  10. python 字符串填充0