Python 如何追加内容到文件?
open('file', 'a') 以追加模式打开,write() 写入不覆盖原内容;'a+' 可同时读。with 语句自动关文件。本文给出示例与模式对照。
用追加模式打开:open('log.txt', 'a')——写入的内容追加到文件末尾而不覆盖原内容;用 with 语句确保自动关闭。
基本写法
with open('app.log', 'a', encoding='utf-8') as f:
f.write('新的一行日志\n')
模式速查
| 模式 | 行为 |
|---|---|
'a' |
追加写,文件不存在则创建 |
'a+' |
追加写 + 可读 |
'w' |
覆盖写(清空原内容!) |
'x' |
排他创建,文件已存在则报错 |
常见配套
# 追加多行
lines = ['第一行', '第二行']
with open('data.txt', 'a') as f:
f.writelines(line + '\n' for line in lines)
# 将 Python 缓冲刷给操作系统;需要持久化时再 fsync
import os
with open('app.log', 'a', encoding='utf-8') as f:
f.write('critical event\n')
f.flush()
os.fsync(f.fileno())
常见问题(FAQ)
Q:追加后读不到刚写的内容? 先确认以 a+ 打开并在读取前 flush、seek 到要读的位置;a 不能读,a+ 初始位置在末尾。flush 不等于持久化到存储介质。
Q:多进程同时追加安全吗? O_APPEND 仅限定底层追加写位置,不保证 Python 一条文本消息对应一次系统调用,也不保证网络文件系统行为;多个写入者应使用适当锁或集中写入。