Python 文件读取的不同技巧比对
发布时间:2021-12-07 16:01:33 所属栏目:教程 来源:互联网
导读:Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果。 场景 逐行读取一个 2.9G 的大文件 CPU i7 6820HQ RAM 32G 方法 对每一行的读取进行一次分割字符串操作 以下方法都使用 withas 方法打开文件。 with 语句适
|
Python 读文件的方式多种多样,但是当需要读取一个大文件的时候,不同的读取方式会有不一样的效果。 场景 逐行读取一个 2.9G 的大文件 CPU i7 6820HQ RAM 32G 方法 对每一行的读取进行一次分割字符串操作 以下方法都使用 with…as 方法打开文件。 with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。 方法一 最通用的读文件方式 1 2 3 with open(file, 'r') as fh: for line in fh.readlines(): line.split("|") 运行结果: 耗时 15.4346568584 秒 系统监视器中显示内存从 4.8G 一下子飙到了 8.4G, fh.readlines() 将读取的所有行数据存到内存,这种方法适合小文件。 方法二 1 2 3 4 with open(file, 'r') as fh: line = fh.readline() while line: line.split("|") 运行结果: 耗时 22.3531990051 秒 内存几乎没有变化,因为内存中只存取一行的数据,但是时间明显比上一次的长,对于进一步处理数据来说效率不高。 方法三 1 2 3 with open(file) as fh: for line in fh: line.split("|") 运行结果: 耗时 13.9956979752 秒 内存几乎没有变化,速度也比方法二快。 for line in fh 将文件对象 fh 视为可迭代的,它自动使用缓冲的 IO 和内存管理,因此您不必担心大文件。这是很 pythonic 的方式! 方法四 fileinput 模块 1 2 for line in fileinput.input(file): line.split("|") 运行结果: 耗时 26.1103110313 秒 内存增加了 200-300 MB,速度是以上最慢的。 总结 以上方法仅供参考,公认的大文件读取方法还是三最好。但是具体情况还是要根据机器的性能、处理数据的复杂度。 ![]() (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐

