当前位置: 首页 > 编程笔记 >

利用Python读取文件的四种不同方法比对

邓韬
2023-03-14
本文向大家介绍利用Python读取文件的四种不同方法比对,包括了利用Python读取文件的四种不同方法比对的使用技巧和注意事项,需要的朋友参考一下

前言

大家都知道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,速度是以上最慢的。

总结

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

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对小牛知识库的支持。

 类似资料:
  • 问题内容: 似乎有很多,很多方法的Java(阅读文本文件,等等),我个人最喜欢的是用在构造函数(它只是简单地使用mathy数据处理更好的作品,并有熟悉的语法)。 蜘蛛鲍里斯(Boris)也提到和。 有人可以解释每种方法的利弊吗?具体来说,我什么时候要使用它们? (编辑)我想我应该具体一点,并补充说我对这种方法有很强的偏好。所以真正的问题是,当 不会 想使用它? 问题答案: 让我们从头开始。问题是你

  • 本文向大家介绍python 不同方式读取文件速度不同的实例,包括了python 不同方式读取文件速度不同的实例的使用技巧和注意事项,需要的朋友参考一下 1、按行读取较慢较耗时: 2、快速读取所有行: 以上这篇python 不同方式读取文件速度不同的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍python读取各种文件数据方法解析,包括了python读取各种文件数据方法解析的使用技巧和注意事项,需要的朋友参考一下 python读取.txt(.log)文件 、.xml 文件 、excel文件数据,并将数据类型转换为需要的类型,添加到list中详解 1.读取文本文件数据(.txt结尾的文件)或日志文件(.log结尾的文件) 以下是文件中的内容,文件名为data.txt(与dat

  • 本文向大家介绍Python读取文件内容的三种常用方式及效率比较,包括了Python读取文件内容的三种常用方式及效率比较的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python读取文件内容的三种常用方式。分享给大家供大家参考,具体如下: 本次实验的文件是一个60M的文件,共计392660行内容。 程序一: 运行结果:0.812143868027s 程序二: 运行时间:0.74222778

  • 我有两个不同的方法,在两个不同的类中。我希望他们都能阅读同一行输入,并检查不同的内容。一个查找“给我冲杯咖啡”之类的说明,另一个查找不同的关键字,如“请”和“谢谢”(这些影响程序对我的反应): 然后我在我的主字符串中调用它们,只是为了测试它们: 我的控制台显示如下: 我知道发生了什么,但我想不出其他办法。我也尝试过使用同一个扫描仪,不同的字符串,但仍然不起作用。我怎样才能使这两种方法都能读取我的第

  • 本文向大家介绍Shell逐行读取文件的4种方法,包括了Shell逐行读取文件的4种方法的使用技巧和注意事项,需要的朋友参考一下 在Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的脚本里的方法,而且是效率最高,使用最多的方法。为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率。 方法1:while循环中执行效率最高,最常用的方法。 注释:我习惯把这