From 03eddc109af7fa4c5b1ba841342bdcdf06fa1240 Mon Sep 17 00:00:00 2001 From: lkjing2021345 <1908499668@qq.com> Date: Sat, 22 Aug 2026 01:09:38 +0800 Subject: [PATCH] =?UTF-8?q?Add=20Day=5F13:=20=E6=96=87=E4=BB=B6=E8=AF=BB?= =?UTF-8?q?=E5=86=99=E4=B8=8EJSON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Day_13/README.md | 89 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 Day_13/README.md diff --git a/Day_13/README.md b/Day_13/README.md new file mode 100644 index 0000000..16e9055 --- /dev/null +++ b/Day_13/README.md @@ -0,0 +1,89 @@ +# Day_13 · 文件读写与 JSON:让数据活到下次运行 + +> 预计耗时:25~30 分钟 +> 程序一关,变量就没了。想让数据存下来(这就是"持久化",数据库干的事),先从文件开始。 +> Django 的数据库、缓存的本质,都是"把数据存起来再读回来"。 + +## 今日知识点 + +- 写文件:`with open("note.txt", "w") as f: f.write(内容)`(`w` = 覆盖写) +- 读文件:`with open("note.txt", "r") as f: 内容 = f.read()` +- `with` 会自动关文件,不用手动 close +- **JSON**:一种"把字典/列表变成文本"的格式,`json.dumps` 变文本、`json.loads` 变回数据 +- 为什么重要:HTTP 接口传输的数据、配置文件,全是 JSON 格式 + +## 先学(教程) + +- 菜鸟教程("文件方法"一节,看 open/read/write 即可):https://www.runoob.com/python3/python3-file-methods.html +- 菜鸟教程("JSON"一节):https://www.runoob.com/python3/python3-json.html +- B站黑马教程(看讲"文件操作"的几集):https://www.bilibili.com/video/BV1qW4y1a7fU/ + +## 任务(后做) + +新建 `day13.py`: + +1. 写入再读回: + ```python + text = input("写一句话存起来:") + with open("note.txt", "w", encoding="utf-8") as f: + f.write(text) + + with open("note.txt", "r", encoding="utf-8") as f: + content = f.read() + print("读回来的是:", content) + ``` + 运行后确认同目录出现了 `note.txt`,且内容一致。(注意 `encoding="utf-8"`,否则中文会乱码。) +2. 用 JSON 存字典: + ```python + import json + + user = {"name": "张三", "age": 18, "city": "青岛"} + + with open("user.json", "w", encoding="utf-8") as f: + json.dump(user, f, ensure_ascii=False) # ensure_ascii=False 让中文可读 + + with open("user.json", "r", encoding="utf-8") as f: + loaded = json.load(f) + + print(loaded["name"], loaded["age"]) # 从文件里还原的字典 + ``` +3. **进阶(加分)**:把 Day_5 的"三个用户列表"用 `json.dump` 存进 `users.json`, + 再读回来遍历打印每个人的名字。 + +## 完成标准 + +- [ ] note.txt 和 user.json 出现在同目录,读回内容一致 +- [ ] 能说出 `json.dump` 和 `json.load` 各是干嘛的 +- [ ] (进阶)用户列表存取成功 + +**提交方式**:把 `day13.py` 代码贴在当日工单评论里。 + +## 参考解答(先做再看) + +```python +text = input("写一句话存起来:") +with open("note.txt", "w", encoding="utf-8") as f: + f.write(text) +with open("note.txt", "r", encoding="utf-8") as f: + print("读回来的是:", f.read()) + +import json +user = {"name": "张三", "age": 18, "city": "青岛"} +with open("user.json", "w", encoding="utf-8") as f: + json.dump(user, f, ensure_ascii=False) +with open("user.json", "r", encoding="utf-8") as f: + loaded = json.load(f) +print(loaded["name"], loaded["age"]) + +# 进阶 +users = [ + {"name": "张三", "age": 19}, + {"name": "李四", "age": 20}, + {"name": "王五", "age": 18}, +] +with open("users.json", "w", encoding="utf-8") as f: + json.dump(users, f, ensure_ascii=False) +with open("users.json", "r", encoding="utf-8") as f: + for u in json.load(f): + print(u["name"]) +```