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,速度是以上最慢的。 总结 以上方法仅供参考,公认的大文件读取方法还是三最好。但是具体情况还是要根据机器的性能、处理数据的复杂度。 ![]() (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐