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" | 二进制,常与其它字母组合,如 "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:自动关闭
漏写 close() 会长时间占用句柄。用 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(...)。