在 Python 中,文本与二进制文件的读写通过内置函数 open 完成:指定路径与模式后得到文件对象,再调用 read、write 等方法。使用完毕后须关闭文件;推荐使用 with open(...),离开语句块时自动关闭。处理中文文本时,宜显式指定 encoding="utf-8"。本节说明打开模式、常见读写方式及编码注意点。
写入与读取示例
先用 "w" 写入两行,再用 "r" 读取全文。下列示例手动调用 close();后续将改用 with:
f = open("demo.txt", "w")
f.write("Hello file!\n第二行\n")
f.close()
f = open("demo.txt", "r")
print(f.read())
f.close()输出:
Hello file!
第二行打开模式
| 模式 | 说明 |
|---|---|
"r" | 只读(默认),文件须已存在 |
"w" | 只写,若文件存在则清空后重写;不存在则创建 |
"a" | 在末尾追加;不存在则创建 |
"x" | 仅当文件不存在时创建,已存在则报错 |
"r+" | 读写 |
"b" | 二进制,常与 "r"、"w" 等组合,如 "rb"、"wb" |
"w" 会清除原有内容。若须在末尾续写日志,应使用 "a",勿误用 "w"。
几种读法
read() 一次读取全部内容,适合小文件。readline() 读取一行。对文件对象直接 for line in f 按行迭代,大文件更省内存。读指针移动后,可用 seek(0) 回到开头:
f = open("demo.txt", "r")
print(f.read())
f.seek(0)
print(f.readline())
f.seek(0)
for line in f:
print(line.strip())
f.close()with 语句:自动关闭
未关闭文件可能长时间占用句柄。使用 with 包裹读写,离开缩进块时自动关闭,异常退出时同样会关闭:
with open("demo.txt", "r") as f:
print(f.read())
with open("note.txt", "w", encoding="utf-8") as f:
f.write("第一行\n")
f.write("第二行\n")
print("写入完成")中文与编码
在 Windows 等环境中,未指定编码时默认编码可能不是 UTF-8,中文易出现乱码。读写文本文件时建议写明编码:
with open("cn.txt", "w", encoding="utf-8") as f:
f.write("你好,世界\n")追加写入
"a" 模式将新内容接在文件末尾,适用于日志等场景:
with open("log.txt", "a", encoding="utf-8") as f:
f.write("2024-01-01: 系统启动\n")判断文件是否存在
import os
if os.path.exists("demo.txt"):
print("文件存在")
else:
print("文件不存在")以只读方式打开不存在的路径将引发 FileNotFoundError,可先判断路径,或使用 try/except 处理。目录创建、移动与递归遍历见文件与目录管理。
常见错误
- 以
"r"打开不存在的文件将引发FileNotFoundError。 - 误用
"w"会清空已有内容;须保留旧数据时使用"a"或先备份。 - 手动
open后须关闭;优先使用with open(...)。
本节说明了 Python 中 open、读写模式与 with 的用法。下一节介绍文件与目录管理:os 与 shutil 的常见操作。