写入文件与追加内容
安全地写入新数据,并向现有文件追加内容。
写入文件与追加内容 是 CoddyKit 上的免费 Python Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。
简介
向文件写入和追加内容,可以让程序在多次运行之间持久保存数据。
写入模式 'w'
open('out.txt', 'w') 会创建文件(如果文件已存在则清空其内容)。f.write('Hello') 会写入该字符串。
# with open('out.txt', 'w') as f:
# f.write('Hello, World!')
print('write mode demo')writelines()
f.writelines(list_of_strings) 会写入列表中的每个字符串。它不会自动添加换行符。
lines = ['line1\n', 'line2\n']
# with open('out.txt', 'w') as f:
# f.writelines(lines)
print('writelines demo')追加模式 'a'
open('log.txt', 'a') 会以追加模式打开文件——新数据会添加到末尾,而不会清空已有内容。
# with open('log.txt', 'a') as f:
# f.write('new entry\n')
print('append mode demo')write() 中的换行符
write() 不会自动添加换行符。您必须包含 \n:f.write('line\n')
# with open('out.txt', 'w') as f:
# f.write('first line\n')
# f.write('second line\n')
print('newline demo')读写模式 'r+'
open(f,'r+') 会同时打开读取和写入功能。指针从开头开始——写入时会覆盖现有内容。
# with open('out.txt', 'r+') as f:
# f.seek(0, 2) # go to end
# f.write('appended')
print('r+ demo')刷新缓冲区
f.flush() 会强制将缓冲数据写入磁盘。对于需要实时输出的日志文件很有用。
# with open('log.txt', 'a') as f:
# f.write('event\n')
# f.flush()
print('flush demo')使用 print() 写入文件
print('text', file=f) 使用 print() 的格式化方式将内容写入文件(会添加换行符)。这是 write() 的便捷替代方式。
# with open('out.txt', 'w') as f:
# print('Hello', file=f)
print('print-to-file demo')原子写入模式
先写入临时文件,然后将其重命名为最终路径。这样可以防止部分写入破坏目标文件。
import tempfile, os
# with tempfile.NamedTemporaryFile('w', delete=False) as f:
# f.write(data); tmp = f.name
# os.replace(tmp, 'out.txt')
print('atomic write demo')将 JSON 写入文件
import json; json.dump(obj, f, indent=2) 可以将 Python 数据整洁地序列化到 JSON 文件中。
import json
data = {'name': 'Alice', 'age': 30}
# with open('data.json', 'w') as f:
# json.dump(data, f, indent=2)
print(json.dumps(data, indent=2))二进制写入模式 'wb'
open('img.bin', 'wb') 会以二进制写入模式打开文件。请写入 bytes 对象:f.write(b'\x00\xff')
# with open('out.bin', 'wb') as f:
# f.write(bytes([0, 255, 128]))
print('binary write demo')快速检查
使用模式 'w' 打开现有文件时会发生什么?
回顾
模式 'w' 会截断文件,'a' 会追加内容,'r+' 会读取和写入。使用 write() 时显式加入 \n。print(file=f) 是一种便捷的替代方式。需要实时记录日志时请刷新缓冲区。
继续学习
做得很好!请继续下一课,持续进步。
常见问题解答
「写入文件与追加内容」课时是免费的吗?
是的 — 「写入文件与追加内容」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。
「写入文件与追加内容」这节课中我会学到什么?
安全地写入新数据,并向现有文件追加内容。 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Python Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「写入文件与追加内容」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Python Academy 课中编写并运行代码吗?
能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。