7.3 文件路径与编码
文件读写最常见的错误,不一定来自 read() 或 write(),而是来自路径(path)和编码(encoding)。路径决定 Python 去哪里找文件;编码决定 Python 用什么规则理解文件里的字节。
相对路径与当前工作目录
相对路径(relative path)不是“相对于当前 Python 文件”,而是相对于当前工作目录(current working directory)。这点很容易让新手困惑。
python
with open("data/quotes.txt", "r", encoding="UTF-8") as file:
content = file.read()如果当前工作目录是项目根目录,那么 Python 会寻找:
text
project/
data/
quotes.txt但如果你在另一个目录运行程序,同样的 "data/quotes.txt" 可能就找不到文件。
正在加载交互实验...
注意
当你看到
FileNotFoundError 时,先不要急着怀疑文件内容。第一步应该检查“程序当前从哪个目录开始找文件”。正在加载概念检查...
UTF-8 编码
计算机文件本质上保存的是字节(byte)。编码负责把字符和字节互相转换。UTF-8 是目前最常用、兼容性很好的文本编码。
python
with open("note.txt", "w", encoding="UTF-8") as file:
file.write("你好,Python!")
with open("note.txt", "r", encoding="UTF-8") as file:
print(file.read())如果写入和读取使用的编码不一致,英文可能看起来没问题,但中文、符号、emoji 等内容很容易出错。
正在加载概念检查...
正在加载本节练习...