Python

30|文本文件读写与字符编码

面向按顺序学习 Python 的初学者,本篇在第 29、22 篇知识上,帮助读者显式使用 UTF-8 安全读写文本。

◉ 1.2k 字◌ 8 分钟♙ 郑在混

这套课程按知识依赖排列。本篇的前置知识是:第 29、22 篇。学完后,你应该能够显式使用 UTF-8 安全读写文本。

本篇要解决的问题

本篇只处理“文本文件读写与字符编码”这一件事。示例基于 Python 3.14.6,在 macOS 环境核验;除明确标注的终端命令外,代码本身只使用 Python 标准能力。

先看清一个容易误解的细节

字符通过编码变成文件字节

Python 字符串写入文件前按 UTF-8 编码成字节,读取时再把字节解码成字符串。读写双方编码不一致会产生乱码或解码错误。

核心概念

  • w 模式会截断原文件,写入前必须确认目标。
  • r 模式读取不存在文件会产生 FileNotFoundError
  • 本篇显式调用 close();第 34 篇会用 with 更可靠地管理关闭动作。

跟着示例运行

把下面代码保存到本课脚本并运行:

from pathlib import Path

file_path = Path("notes.txt")
writer = file_path.open("w", encoding="utf-8")
writer.write("变量\n循环\n函数\n")
writer.close()

reader = file_path.open("r", encoding="utf-8")
content = reader.read()
reader.close()
print(content)

预期结果:

变量
循环
函数

输出中包含环境路径、集合元素或日志格式时,具体文字和顺序可能随本机环境变化;判断是否成功应以本篇说明的关键结果为准。

按执行顺序拆开看

  1. 写入端以 UTF-8 把三个中文字符串和换行编码为字节,close() 确保缓冲内容交给文件系统。
  2. 读取端用相同编码把字节还原为字符串;显式关闭后才结束资源占用。

初学者容易混淆的地方

  • 使用 w 模式打开重要文件却未确认覆盖风险。
  • 依赖系统默认编码;跨机器或跨工具交换中文文件时应显式写 encoding="utf-8"

练习

  1. 写入三行学习记录并读取。
  2. 改用 a 模式追加一行,确认原内容仍保留。

练习应先独立完成,再通过增加 print 输出或检查文件内容观察中间状态。当前课程尚未讲到的能力,不要求提前搜索复杂写法。

本篇边界

本篇目标是显式使用 UTF-8 安全读写文本。没有展开的高级机制会放到后续课程;先确保能够解释示例中每一行代码,再进入下一篇。

相关文章

© 2026 郑在混知识库 · 已运行 46 天 · 豫ICP备2026037626号-1