利用Python读取文件的四种不同方法比对
发布时间 - 2026-01-11 01:10:09 点击率:次前言

大家都知道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使用defaultdict读取文件各列的方法
# C++/Php/Python/Shell 程序按行读取文件或者控制台的实现
# Python实现读取文件最后n行的方法
# Python用list或dict字段模式读取文件的方法
# Python按行读取文件的实现方法【小文件和大文件读取】
# Python按行读取文件的简单实现方法
# Python3读取文件常用方法实例分析
# python使用fileinput模块实现逐行读取文件的方法
# python逐行读取文件内容的三种方法
# Python linecache.getline()读取文件中特定一行的脚本
# 分析Python读取文件时的路径问题
# 大文件
# 几乎没有
# 这是
# 会有
# 好了
# 大家都
# 适用于
# 不高
# 多种多样
# 这篇文章
# 就来
# 谢谢大家
# 具体情况
# 也比
# 您不
# 比上
# 过程中
# 自动关闭
# 仅供参考
# 增加了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网页设计与网站制作内容,怎样注册网站?
Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel怎么清理缓存_Laravel optimize clear命令详解
php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】
如何用好域名打造高点击率的自主建站?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全
Android自定义listview布局实现上拉加载下拉刷新功能
Laravel PHP版本要求一览_Laravel各版本环境要求对照
如何批量查询域名的建站时间记录?
怎么用AI帮你设计一套个性化的手机App图标?
微信小程序 HTTPS报错整理常见问题及解决方案
韩国服务器如何优化跨境访问实现高效连接?
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
什么是javascript作用域_全局和局部作用域有什么区别?
如何在IIS7中新建站点?详细步骤解析
装修招标网站设计制作流程,装修招标流程?
如何在万网开始建站?分步指南解析
Linux系统命令中screen命令详解
微信小程序 scroll-view组件实现列表页实例代码
高防服务器租用指南:配置选择与快速部署攻略
如何在宝塔面板中创建新站点?
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
昵图网官方站入口 昵图网素材图库官网入口
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel如何使用Vite进行前端资源打包?(配置示例)
js实现点击每个li节点,都弹出其文本值及修改
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
Laravel怎么使用Intervention Image库处理图片上传和缩放
详解vue.js组件化开发实践
如何在 React 中条件性地遍历数组并渲染元素
如何快速使用云服务器搭建个人网站?
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
Python自动化办公教程_ExcelWordPDF批量处理案例
如何在建站之星网店版论坛获取技术支持?
Linux系统命令中tree命令详解
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
如何在阿里云完成域名注册与建站?
深入理解Android中的xmlns:tools属性
Android使用GridView实现日历的简单功能
Laravel怎么使用artisan命令缓存配置和视图
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Android利用动画实现背景逐渐变暗

