第 07 节:让程序留下痕迹:读写文本文件
本节 objectives:
- 用
with open(...)读取文本文件- 把列表数据写回文本文件
- 用一行一条记录的格式保存简单数据
程序一结束,变量就消失了
前面写的任务列表都活在本次运行的内存里。脚本结束后,变量没有自动保存。要让小程序记住数据,最朴素的办法是把文本写进文件,下次运行时再读回来。Python 教程介绍 open() 读写文件,并推荐用 with 确保代码块结束后文件被关闭1。
本课先用纯文本,不用数据库。因为现在目标是看懂“保存”和“恢复”的机制。
讲解
读取文件得到字符串。 f.read() 会读取文件内容;f.readlines() 会得到多行。读出来通常还要去掉末尾换行。
写入模式会覆盖文件。 open(path, "w") 用写入模式打开文件,会把原内容替换成新内容。做练习时先用小测试文件。
with 管理关闭动作。 with open(...) as f: 让文件对象只在缩进块里使用;离开代码块后文件会关闭1。
简单格式先一行一条。 对待办标题这种小数据,每行一个标题已经够用。复杂字段可以以后再学 JSON。
跟我做一遍(worked example)
把任务标题写入 tasks.txt,再读回来:
写入时手动加 \n,读取时用 strip() 去掉换行。这样内存里的列表和文件里的多行文本能互相转换。
换你补全(faded example)
补全读取函数:
答案:
关键判断点是:文件行尾的换行符不是任务标题的一部分。
小结 + 通向下一节
文件读写让脚本有了记忆。最后一节把运行、分支、循环、函数、列表和文件连起来,做一个小 CLI。
Footnotes
-
Python Tutorial: Input and Output — https://docs.python.org/3/tutorial/inputoutput.html ↩ ↩2
练习
Level 1: 写入三行文本。
- 做法:创建
notes.txt,写入三条学习笔记,每条一行。
提示 1
先用一个不重要的测试文件。 Level 2: 读文件并编号显示。
- 做法:读取
notes.txt,输出1. ...、2. ...。
提示 2
可以用一个 number 变量从 1 累加。
看参考答案
读取、清理、显示是三个步骤。
自评