大文件的读取方式 | Python从入门到精通:高阶篇之四十七

简介: 直接调用read()时它会将文本文件的所有内容全部都读取出来;如果要读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏,所以对于较大的文件,不要直接调用read()。

查看上一节:文件的简单读取

读取大文件

上节课我们讲了可以使用read来读取文件,而且使用open来打开文件的话是要考虑文件的编码格式的,另外关于二进制文件如何打开后续再说。
read()使用的几点注意:
1、如果直接调用read()它会将文本文件的所有内容全部都读取出来;
2、如果要读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏;所以对于较大的文件,不要直接调用read()。
那该如何读取大文件呢?首先使用help查看一下read()的信息:

help(file_obj.read)
AI 代码解读

执行结果为:
image.png
可以看到有一个size的数据,并且大小为-1。
注意:
1、 read()可以接收一个size作为参数,该参数用来指定要读取的字符的数量;
2、默认值为-1,它会读取文件中的所有字符;
3、可以为size指定一个值,这样read()会读取指定数量的字符;
4、每一次读取都是从上次读取到位置开始读取的
5、如果字符的数量小于size,则会读取剩余所有的
6、如果已经读取到了文件的最后了,则会返回''空串
代码如下:

file_name = 'demo2.txt'

try:
    with open(file_name,encoding='utf-8') as file_obj:

        # content = file_obj.read(-1)
        content = file_obj.read(6)#指定读取6个字符
        content = file_obj.read(6)#从上次读取到的位置开始
        print(content)
        print(len(content))
except FileNotFoundError :
    print(f'{file_name} 这个文件不存在!')
AI 代码解读

执行结果为:
image.png
如果再添加2行 content = file_obj.read(6))
执行结果为:
image.png
再添加一行就不再有字符串可以读取了,即返回空串:
image.png

读取大文件的方式

file_name = 'demo.txt'

try:
    with open(file_name,encoding='utf-8') as file_obj:
        # 定义一个变量,来保存文件的内容
        file_content = ''
        # 定义一个变量,来指定每次读取的大小
        chunk = 100
        # 创建一个循环来读取文件内容
        while True:
            # 读取chunk大小的内容
            content = file_obj.read(chunk)

            # 检查是否读取到了内容
            if not content:
                # 内容读取完毕,退出循环
                break

            # 输出内容
            # print(content,end='')
            file_content += content

except FileNotFoundError :
    print(f'{file_name} 这个文件不存在!')

print(file_content)
AI 代码解读

执行结果为:
image.png

点击查看配套视频教程

获取更多Python内容,请订阅Python学习站官方技术圈!

目录
打赏
0
0
0
0
189
分享
相关文章
|
17天前
|
Python字符串格式化利器:f-strings入门指南
Python字符串格式化利器:f-strings入门指南
126 80
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
[oeasy]python094_使用python控制音符列表_midi_文件制作
本文介绍了如何使用Python控制音符列表制作MIDI文件。首先回顾了列表下标索引(正数和负数)的用法,接着通过`mido`库实现MIDI文件生成。以《两只老虎》为例,详细解析了代码逻辑:定义音高映射、构建旋律列表、创建MIDI文件框架,并将音符插入音轨。还探讨了音符时值与八度扩展的实现方法。最终生成的MIDI文件可通过不同平台播放或编辑。总结中提到,此技术可用于随机生成符合调性的旋律,同时引发对列表其他实际应用的思考。
40 5
|
3月前
|
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
198 69
Python与MongoDB的亲密接触:从入门到实战的代码指南
本文详细介绍了Python与MongoDB结合使用的实战技巧,涵盖环境搭建、连接管理、CRUD操作、高级查询、索引优化、事务处理及性能调优等内容。通过15个代码片段,从基础到进阶逐步解析,帮助开发者掌握这对黄金组合的核心技能。内容包括文档结构设计、批量操作优化、聚合管道应用等实用场景,适合希望高效处理非结构化数据的开发者学习参考。
54 0
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
161 10
Python文件打包:一站式指南
本文深入探讨Python文件打包的各种方法,从基础的zip和tar工具到高级的setuptools、PyInstaller、cx_Freeze等,涵盖Docker镜像、虚拟环境及自包含可执行文件的打包方式。通过示例代码与详细解析,帮助开发者根据项目需求选择合适的打包方案,提升代码分发与部署效率。内容全面,适合各水平读者学习参考。
206 7
Python入门修炼:开启你在大数据世界的第一个脚本
Python入门修炼:开启你在大数据世界的第一个脚本
108 6
Python创意爱心代码大全:从入门到高级的7种实现方式
本文分享了7种用Python实现爱心效果的方法,从简单的字符画到复杂的3D动画,涵盖多种技术和库。内容包括:基础字符爱心(一行代码实现)、Turtle动态绘图、Matplotlib数学函数绘图、3D旋转爱心、Pygame跳动动画、ASCII艺术终端显示以及Tkinter交互式GUI应用。每种方法各具特色,适合不同技术水平的读者学习和实践,是表达创意与心意的绝佳工具。
1246 0
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问