Skip to content
This page has been auto-translated and may contain errors.View in English

个人日记

Dex 嘿。说实话这次任务真的让人应接不暇,我一直想写点日志。你能做一个简单的日记应用吗?我想输入新条目,让它带日期保存下来,然后还能回头读旧的。不用太复杂。只是想把脑子里的想法倒出来 ✍️

你要构建的东西

Commands: new / read / quit

> new
2026-05-24
Had a productive morning. Finished the inventory manager project.
Figured out how JSON serialisation works properly.

[press Enter on an empty line to save]
Entry saved.

> read
--- 2026-05-24 ---
Had a productive morning. Finished the inventory manager project.
Figured out how JSON serialisation works properly.

--- 2026-05-23 ---
...

> quit

你会用到什么

  • 文件与异常 — 用追加模式添加新条目、读回整个文件、处理首次运行时文件不存在的情况
  • 模块与标准库datetime 用于获取今天日期的字符串
  • 字符串 — 格式化日期标题、将文件内容拆分回各个条目
  • 控制流 — 命令循环,以及写条目时的多行输入循环
  • 输出与输入

提示

追加模式是关键。"a" 打开文件会在末尾添加内容,而不会动已有的部分。这就是新条目得以加入而不删除旧条目的方式。

datetime.date.today() 可以获取日期。str() 或 f-string 把它转成字符串,作为条目标题使用。datetime 模块在标准库中。

先收集整个条目再写入。 让用户输入多行,把每一行加入一个列表。当他们提交一个空行时,拼接列表并一次性写入整个条目。

更进一步

当核心日记功能可以工作之后:

  • 限制 read 显示的内容。 每次都打印整个文件很快就会变得难以使用。默认只显示最近的三条条目,并提供显示更多的选项。
  • 搜索条目。 添加一个 search 命令,打印出包含某个关键词的所有条目。
  • 每条条目的字数统计。 显示每条条目时一并显示它包含多少个单词。