共计 1051 个字符,预计需要花费 3 分钟才能阅读完成。
在前一节中我们学习了文件读取的高级技巧,本节将重点放在文件的写入和追加操作上,这是数据持久化存储的重要基础。
- 写入模式 w
以"w"模式打开文件会清空原有内容,然后写入新数据:
with open("output.txt", "w", encoding="utf-8") as f:
f.write(" 第一行内容 \n")
f.write(" 第二行内容 \n")
如果 output.txt 文件不存在,会自动创建。如果存在,原有内容会被覆盖。
- 追加模式 a
以"a"模式打开文件会在文件末尾追加新内容,而不会清空已有数据:
with open("output.txt", "a", encoding="utf-8") as f:
f.write(" 追加的一行内容 \n")
这种方式常用于日志系统,每次写入不会影响已有记录。
- 一次性写入多行
可以使用writelines()方法批量写入多行:
lines = [" 第一行 \n", " 第二行 \n", " 第三行 \n"]
with open("output.txt", "w", encoding="utf-8") as f:
f.writelines(lines)
注意 writelines() 不会自动添加换行符,因此需要在字符串末尾加 \n。
- 结合读写模式 r+ / w+ / a+
"r+"表示可读可写,文件必须存在,写入从文件开头开始,可能覆盖原有内容。"w+"表示可读可写,如果文件存在则清空,不存在则新建。"a+"表示可读可写,写入从文件末尾追加,不会清空文件。
示例:
with open("output.txt", "a+", encoding="utf-8") as f:
f.write(" 新的追加内容 \n")
f.seek(0)
print(f.read())
- 小技巧:自动换行写入
为避免忘记加\n,可以自己封装一个写入函数:
def write_line(filename, text):
with open(filename, "a", encoding="utf-8") as f:
f.write(text + "\n")
write_line("output.txt", " 封装写入的一行 ")
总结:
本节我们掌握了文件写入与追加的多种方式,并理解了 "w"、"a"、"r+" 等不同模式的应用场景。在实际项目中,写入模式的选择直接决定了数据是否被覆盖或追加,必须谨慎操作。
练习与思考:
- 创建一个程序,每次运行时向文件中写入“程序运行了一次”,并统计运行次数。
- 写一个函数,能够接受一个字符串列表,将其逐行写入到文件中。
- 使用
"a+"模式写入数据后,再次读取整个文件内容,验证追加是否成功。
正文完