资讯专栏INFORMATION COLUMN

Python 文件读取的不同方法比对

Java_oldboy / 2653人阅读

摘要:读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果。总结以上方法仅供参考,公认的大文件读取方法还是三最好。原文地址文件读取的不同方法比对我的博客时空路由器

Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果。

场景

逐行读取一个 2.9G 的大文件

CPU i7 6820HQ

RAM 32G

方法

对每一行的读取进行一次分割字符串操作
以下方法都使用 with...as 方法打开文件。

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。

方法一 最通用的读文件方式
with open(file, "r") as fh:
  for line in fh.readlines():
    line.split("|")

运行结果: 耗时 15.4346568584 秒
系统监视器中显示内存从 4.8G 一下子飙到了 8.4G, fh.readlines() 将读取的所有行数据存到内存,这种方法适合小文件。

方法二
with open(file, "r") as fh:
  line = fh.readline()
  while line:
    line.split("|")

运行结果: 耗时 22.3531990051 秒
内存几乎没有变化,因为内存中只存取一行的数据,但是时间明显比上一次的长,对于进一步处理数据来说效率不高。

方法三
with open(file) as fh:
  for line in fh:
    line.split("|")

运行结果: 耗时 13.9956979752 秒
内存几乎没有变化,速度也比方法二快。
for line in fh 将文件对象 fh 视为可迭代的,它自动使用缓冲的 IO 和内存管理,因此您不必担心大文件。这是很 pythonic 的方式!

方法四 fileinput 模块
for line in fileinput.input(file):
  line.split("|")

运行结果: 耗时 26.1103110313 秒
内存增加了 200-300 MB,速度是以上最慢的。

总结

以上方法仅供参考,公认的大文件读取方法还是三最好。但是具体情况还是要根据机器的性能、处理数据的复杂度。

原文地址:Python 文件读取的不同方法比对
我的博客:时空路由器

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44385.html

相关文章

  • 使用OpenCV与Face++实现人脸解锁

    摘要:本文讲解了如何使用,基于与实现人脸解锁的功能。上接上一段程序读取使用创建获取进度确认到目前为止,你应该已经可以就给定的两张图片比对是否是同一个人了。 近几天微软的发布会上讲到了不少认脸解锁的内容,经过探索,其实利用手头的资源我们完全自己也可以完成这样一个过程。 本文讲解了如何使用Python,基于OpenCV与Face++实现人脸解锁的功能。 本文基于Python 2.7.11,Win...

    cc17 评论0 收藏0
  • Python暴力破解zip文件口令

    摘要:通过内置的模块实现对文件的解压,加点料完成口令破解模块基本使用使用压缩文件创建一个文件对象,压缩是需要把改为将文件写入文件中,即将文件压缩将文件对象关闭使用解压文件解压准备阶段首先你需要一个压缩文件,并且给它加上密码,样子长成这样然后你就成 通过Python内置的zipfile模块实现对zip文件的解压,加点料完成口令破解 zipfile模块基本使用 使用zipfile压缩文件 imp...

    hufeng 评论0 收藏0
  • 谷歌推出开源工具DeepVariant,用深度学习识别基因变异

    摘要:今天推出了一个名叫的开源工具,用深度神经网络来从测序数据中快速较精确识别碱基变异位点。今天,团队,联合同属于旗下的生命科学兄弟公司,用了两年多时间,研发出了一个名叫的开源工具,专门用深度神经网络来识别结果中测序数据里这些碱基变异位点。 Google今天推出了一个名叫DeepVariant的开源工具,用深度神经网络来从DNA测序数据中快速较精确识别碱基变异位点。学科研究的革命性进展,特别是基因...

    raledong 评论0 收藏0
  • python大佬养成计划----flask应用

    摘要:将用户登陆信息绑定数据库要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆文件,用来创建远程连接的类主程序创建连接判断用户名是否存在返回的是语句查询结果的个数如果为,没有查到。 将用户登陆信息绑定数据库 要求将用户登陆时的信息,发送至后台与数据库进行比对,来判断用户是否可登陆 #config.py文件,用来创建远程连接的类 class DB: HOST =...

    daryl 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<