跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

Python 文件操作:读取、打开、写入、关闭及文件指针详解

Python 文件操作涉及文件的打开、读取、写入和关闭。核心函数为 open,常用方法包括 read、write、close。文件指针控制读取位置,默认指向开头。常见模式有只读 r、写入 w、追加 a 等。处理大文件建议使用 readline 逐行读取以节省内存。编码问题常需指定 UTF-8。最佳实践是使用 with 语句自动管理资源,配合异常处理确保文件安全关闭。

竹影清风发布于 2025/2/6更新于 2026/6/222 浏览
Python 文件操作:读取、打开、写入、关闭及文件指针详解

Python 文件操作基础指南

在 Python 编程中,文件操作是数据处理、日志记录和配置管理的基础技能。掌握文件的读写、编码处理以及资源管理对于编写健壮的程序至关重要。

一、核心函数与方法

在 Python 中操作文件主要涉及一个核心函数和几个常用方法:

  1. open:打开文件,返回文件对象。
  2. read:读取文件内容到内存。
  3. write:将内容写入文件。
  4. close:关闭文件,释放系统资源。

1.1 open 函数语法

file = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • file:文件名或路径(区分大小写)。
  • mode:打开模式(如 'r', 'w', 'a')。
  • encoding:指定编码格式,推荐 'UTF-8'。

二、读取文件内容

2.1 基本读取步骤

  1. 使用 open 打开文件。
  2. 使用 read 读取内容。
  3. 使用 close 关闭文件。
file = open("HELLO", encoding="UTF-8")
text = file.read()
print(text)
file.close()

注意:如果忘记关闭文件,会导致系统资源泄露,且可能影响后续对文件的访问。

2.2 编码错误处理

Windows 默认编码常为 GBK,而 Python 默认或现代编辑器常使用 UTF-8。若不一致会抛出 UnicodeDecodeError。

错误示例:

# 未指定编码可能导致乱码或报错
file = open("HELLO") 

修正方案: 显式指定 encoding="UTF-8"。

file = open("HELLO", encoding="UTF-8")

三、文件指针与位置控制

文件指针标记了当前读取的位置。首次打开时通常指向开头。执行 read 后,指针移至末尾。

3.1 指针移动验证

file = open("HELLO", encoding="UTF-8")
text = file.read()
print(text)
print("+" * 30)
text = file.read() # 此时无法再次读取内容
print(text)
file.close()

3.2 tell() 与 seek() 方法

  • tell():返回当前文件指针位置。
  • seek(offset, whence):移动文件指针。
    • offset:偏移量。
    • whence:起始位置(0: 开头,1: 当前位置,2: 结尾)。
file = open("HELLO", encoding="UTF-8")
print(file.tell()) # 输出 0
file.seek(5)       # 移动到第 5 个字符处
print(file.tell()) # 输出 5
file.close()

四、文件打开模式详解

open 函数的第二个参数 mode 决定了文件的操作方式。

模式说明
r只读。文件不存在则报错。指针在开头。
w只写。文件存在则清空覆盖。不存在则创建。
a追加。指针在结尾。不存在则创建。
r+读写。指针在开头。文件不存在则报错。
w+读写。文件存在则清空覆盖。
a+读写。指针在结尾。
b二进制模式(如 'rb', 'wb')。

4.1 写入示例

# 写入并覆盖
with open("test.txt", "w", encoding="UTF-8") as f:
    f.write("Hello World")

# 追加写入
with open("test.txt", "a", encoding="UTF-8") as f:
    f.write("\nAppend Content")

五、按行读取大文件

当文件过大时,一次性 read() 会占用大量内存。推荐使用 readline() 或迭代器逐行读取。

5.1 readline 方法

file = open("large_file.txt", encoding="UTF-8")
while True:
    line = file.readline()
    if not line:
        break
    print(line, end="")
file.close()

5.2 最佳实践:with 语句

使用 with 语句可以自动管理资源,无需手动调用 close(),即使发生异常也能正确关闭文件。

try:
    with open("data.txt", "r", encoding="UTF-8") as f:
        content = f.read()
except FileNotFoundError:
    print("文件未找到")
except Exception as e:
    print(f"发生错误:{e}")

六、常见错误与调试

  1. 权限错误 (PermissionError):无权限读取/写入文件,检查文件属性或运行权限。
  2. 路径错误 (FileNotFoundError):确保路径正确,可使用绝对路径。
  3. 编码错误 (UnicodeDecodeError):始终指定 encoding 参数。

七、总结

  • 操作文件首选 open 函数配合 with 上下文管理器。
  • 文本文件务必指定 encoding="UTF-8"。
  • 大文件处理避免一次性加载,使用循环逐行读取。
  • 善用 seek 和 tell 进行随机访问。
  • 生产环境代码需包含异常处理机制。

目录

  1. Python 文件操作基础指南
  2. 一、核心函数与方法
  3. 1.1 open 函数语法
  4. 二、读取文件内容
  5. 2.1 基本读取步骤
  6. 2.2 编码错误处理
  7. 未指定编码可能导致乱码或报错
  8. 三、文件指针与位置控制
  9. 3.1 指针移动验证
  10. 3.2 tell() 与 seek() 方法
  11. 四、文件打开模式详解
  12. 4.1 写入示例
  13. 写入并覆盖
  14. 追加写入
  15. 五、按行读取大文件
  16. 5.1 readline 方法
  17. 5.2 最佳实践:with 语句
  18. 六、常见错误与调试
  19. 七、总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • WebGL 无代码 3D 交互设计平台:翠鸟艺术家技术解析
  • 从 Webhook 到 OpenClaw:钉钉周报提醒机器人的技术演进
  • Stable Diffusion 基石:潜在扩散模型(LDMs)技术详解
  • Python 高效清理 Excel 空白行列:原理与实战
  • Milvus 实战:Attu 可视化安装与 Python 整合指南
  • spidev0.0 接口 C++ 读取数据全为 255 的排查实战
  • Flutter 三方库 flutter_google_maps_webservices 鸿蒙化适配指南
  • Rust 异步微服务架构最佳实践与反模式规避
  • 多模态大语言模型时代的数学推理研究:基准、方法与挑战
  • AI 自动生成一线与二线产区标准图
  • MCP Server 案例:Excel 表格一键生成可视化图表 HTML 报告
  • 深度可分离卷积原理详解及 OPPORTUNITY 数据集实战
  • C++ 手写通用字符串分割 split 函数
  • MySQL 表约束详解:非空、主键与外键的作用
  • 用 DeepSeek 和 Cursor 从零打造智能代码审查工具
  • Mac 修图效率提升指南:Luminar Neo v1.25.1 核心功能实测
  • Node.js 20+ 使用 crypto.webcrypto 加密提速实战
  • PromptPilot 工具使用指南:实现 Prompt 精准优化与迭代
  • Flutter 三方库 webrtc_interface 的鸿蒙化适配指南
  • AI 深度早报:GTC 开幕,Agent 平台与具身模型双线引爆

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online