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

作者: 绿岸公式 | 来源:发表于2017-05-16 17:48 被阅读80次

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 文件读取的不同方法比对
我的博客:时空路由器

相关文章

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

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

  • Python四种逐行读取文件内容的方法

    Python四种逐行读取文件内容的方法 下面四种Python逐行读取文件内容的方法, 分析了各种方法的优缺点及应用...

  • Python read 方法选择

    python read 方法选择 Python里与读取文件内容相关的方法read有多种选择,在什么时候用哪种读取办...

  • 读取txt文件

    """ 读取txt文件txt文件使我们经常操作的文件类型,Python提供了以下几种读取txt文件的方法。read...

  • 文件IO

    python文件打开方法 open(name,[,mode[buf]]) 文件读取 read([size]) si...

  • python 读取大文件,避免内存溢出

    ####python读取大文件 最近在学习python的过程中接触到了python对文件的读取。python读取文...

  • Python批量读取文件(含子文件)

    本文介绍Python如何读取文件夹下所有文件的方法。 主要用于合并多个文件的情况。一、仅读取当前文件夹下的所有文件...

  • Python 文件 读取方法

  • Python读取文件的方法

    Python的文本处理是经常碰到的一个问题,Python的文本文件的内容读取中,有三类方法:read()、read...

  • Python读取csv文件

    Python读取csv文件数据的方法有多种,接下来给大伙介绍两种比较常用的。下面是csv数据文件: 方法一:读取c...

网友评论

    本文标题:Python 文件读取的不同方法比对

    本文链接:https://www.haomeiwen.com/subject/qenlxxtx.html