这套课程按知识依赖排列。本篇的前置知识是:第 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)
预期结果:
变量
循环
函数
输出中包含环境路径、集合元素或日志格式时,具体文字和顺序可能随本机环境变化;判断是否成功应以本篇说明的关键结果为准。
按执行顺序拆开看
- 写入端以 UTF-8 把三个中文字符串和换行编码为字节,
close()确保缓冲内容交给文件系统。 - 读取端用相同编码把字节还原为字符串;显式关闭后才结束资源占用。
初学者容易混淆的地方
- 使用
w模式打开重要文件却未确认覆盖风险。 - 依赖系统默认编码;跨机器或跨工具交换中文文件时应显式写
encoding="utf-8"。
练习
- 写入三行学习记录并读取。
- 改用
a模式追加一行,确认原内容仍保留。
练习应先独立完成,再通过增加 print 输出或检查文件内容观察中间状态。当前课程尚未讲到的能力,不要求提前搜索复杂写法。
本篇边界
本篇目标是显式使用 UTF-8 安全读写文本。没有展开的高级机制会放到后续课程;先确保能够解释示例中每一行代码,再进入下一篇。
相关文章
01|Python 程序从源码到输出经历了什么
面向按顺序学习 Python 的初学者,本篇在零基础上,帮助读者理解源代码、解释器和输出之间的关系。
02|在 macOS 安装并确认 Python 3 环境
面向按顺序学习 Python 的初学者,本篇在第 01 篇知识上,帮助读者在 macOS 中确认 Python 3.14 和 pip 是否可用。
03|交互式解释器和 Python 脚本怎么选择
面向按顺序学习 Python 的初学者,本篇在第 02 篇知识上,帮助读者根据任务选择 REPL 或 `.py` 脚本。
04|建立第一个 Python 项目目录
面向按顺序学习 Python 的初学者,本篇在第 03 篇知识上,帮助读者理解当前目录并正确运行项目脚本。

