Python实用方法之读取本地文件有哪些常用方式

来源:个人站长作者:小诸葛头衔:草根站长
导读:本期聚焦于小伙伴创作的《Python实用方法之读取本地文件有哪些常用方式》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python实用方法之读取本地文件有哪些常用方式》有用,将其分享出去将是对创作者最好的鼓励。

在Python开发中,读取本地文件是处理数据、加载配置、解析日志等场景下的基础操作,掌握不同的文件读取方法能够适配不同的业务需求,提升代码的稳定性和可读性。

Python实用方法之读取本地文件有哪些常用方式

基础文件读取方法

Python内置的open()函数是读取本地文件的核心入口,通过指定文件路径和打开模式,就可以获取文件对象,进而调用对应的读取方法。

最基础的读取流程是先调用open()打开文件,再调用文件对象的read()方法读取全部内容,最后手动关闭文件释放资源,示例代码如下:

# 打开当前目录下的test.txt文件,模式为只读文本
file_obj = open('test.txt', 'r', encoding='utf-8')
# 读取文件全部内容
content = file_obj.read()
# 打印读取到的内容
print(content)
# 手动关闭文件,释放系统资源
file_obj.close()

这里的打开模式r表示只读文本模式,encoding参数指定文件的编码格式,避免中文内容出现乱码。如果不指定编码,Python会使用系统默认编码,在跨环境运行时容易出现问题。

使用with语句的安全读取方式

上面的基础方法需要手动调用close()关闭文件,如果读取过程中出现异常,可能导致文件无法正确关闭,造成资源泄露。使用with语句可以自动管理文件的生命周期,无论是否出现异常,都会在代码块执行结束后自动关闭文件。

使用with语句读取文件的示例代码如下:

# 使用with语句打开文件,无需手动关闭
with open('test.txt', 'r', encoding='utf-8') as file_obj:
    content = file_obj.read()
    print(content)

这种方式是实际开发中最推荐的文件读取方式,代码更简洁,也能避免资源泄露问题。

不同读取方法的适用场景

文件对象除了read()方法外,还提供了其他读取方法,适配不同的读取需求:

  • read(size):指定读取的字节数或字符数,适合大文件分段读取,避免一次性加载全部内容占用过多内存。示例:part_content = file_obj.read(1024)表示每次读取1024个字符。
  • readline():每次读取一行内容,适合按行处理的文本文件,比如日志文件逐行解析。示例:line = file_obj.readline()读取当前行内容。
  • readlines():读取文件所有行,返回一个包含每行内容的列表,适合需要逐行遍历且文件不大的场景。示例:lines = file_obj.readlines()获取所有行列表。

读取二进制文件的方法

如果需要读取图片、视频、压缩包等非文本文件,需要使用二进制读取模式,将打开模式的r替换为rb,此时不需要指定encoding参数,读取到的是字节流数据。

读取二进制文件的示例代码如下:

# 读取图片文件,模式为只读二进制
with open('test.jpg', 'rb') as file_obj:
    binary_data = file_obj.read()
    print(f'读取到的字节数:{len(binary_data)}')

常见问题与解决方法

在读取本地文件时,经常会遇到两个问题:

文件不存在报错

如果指定的文件路径不存在,open()函数会抛出FileNotFoundError异常,可以通过try-except语句捕获处理:

try:
    with open('not_exist.txt', 'r', encoding='utf-8') as file_obj:
        content = file_obj.read()
        print(content)
except FileNotFoundError:
    print('指定的文件不存在,请检查文件路径是否正确')

编码错误

如果文件的编码格式和指定的encoding参数不匹配,会抛出UnicodeDecodeError异常,此时可以尝试更换编码格式,比如常见的gbkutf-16等,或者添加errors参数忽略错误:

# 忽略编码错误,遇到无法解码的字符直接跳过
with open('test.txt', 'r', encoding='utf-8', errors='ignore') as file_obj:
    content = file_obj.read()
    print(content)
打开模式含义适用场景
r只读文本模式读取文本文件,如txt、csv、代码文件等
rb只读二进制模式读取图片、视频、压缩包等非文本文件
r+读写文本模式需要同时读取和修改文本文件的场景
rb+读写二进制模式需要同时读取和修改二进制文件的场景

Python文件读取open函数with语句read方法修改时间:2026-07-20 23:21:43

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。