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

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

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

读取大文件

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

help(file_obj.read)

执行结果为:
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} 这个文件不存在!')

执行结果为:
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)

执行结果为:
image.png

点击查看配套视频教程

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

相关文章
|
21天前
|
Python
【python】python跨文件使用全局变量
【python】python跨文件使用全局变量
|
5天前
|
存储 Python
用Python实现批量下载文件——代理ip排除万难
用Python实现批量下载文件——代理ip排除万难
|
6天前
|
机器学习/深度学习 数据可视化 数据挖掘
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
《Python 简易速速上手小册》第9章:数据科学和机器学习入门(2024 最新版)
18 1
|
6天前
|
JSON 关系型数据库 数据库
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
《Python 简易速速上手小册》第6章:Python 文件和数据持久化(2024 最新版)
33 0
|
6天前
|
人工智能 数据挖掘 程序员
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
《Python 简易速速上手小册》第1章:Python 编程入门(2024 最新版)
35 0
|
6天前
|
数据挖掘 索引 Python
Python 读写 Excel 文件
Python 读写 Excel 文件
11 0
|
6天前
|
数据安全/隐私保护 Python
Python文件与目录操作:面试中的高频考点
【4月更文挑战第15天】本文介绍了Python文件和目录操作的面试重点,包括文件的读写、目录遍历及权限管理。强调了文件关闭、异常处理、特殊文件判断以及权限位和权限字符串的理解。提供了代码示例,如读写文件、遍历目录和更改文件权限,帮助读者在面试中表现出色。掌握这些技能将对编程求职之路大有裨益。
17 0
|
7天前
|
机器学习/深度学习 数据采集 算法
scikit-learn入门指南:从基础到实践
【4月更文挑战第17天】这篇指南介绍了scikit-learn,一个Python数据分析和机器学习的重要库。内容涵盖安装、数据加载与预处理、模型训练(如KNN分类器)、评估、调参优化及高级应用,如降维和聚类。通过实例展示了scikit-learn在分类任务中的使用,强调其在数据科学中的重要性。要深入了解,可参考官方文档和实践案例。
|
7天前
|
存储 监控 开发工具
对象存储OSS产品常见问题之python sdk中的append_object方法支持追加上传xls文件如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
38 9
|
8天前
|
程序员 索引 Python
06-python数据容器-set(集合)入门基础操作
06-python数据容器-set(集合)入门基础操作