用最简单的代码,管理你每天要做的事。
不知道你有没有这样的感觉:手机上装了一堆待办清单 App,功能越来越复杂,反而懒得打开了。
作为一个开发者,我更愿意用终端 + 纯文本的方式来管理任务——简单、快速、没有干扰。
今天我就用 Python 写一个极简的终端待办工具,支持:
- 查看待办列表
- 添加任务
- 完成任务(删除)
- 数据持久化(存到本地 JSON 文件)
全程不到 50 行代码,非常适合新手练习文件操作和命令行交互。
1. 设计思路
我们用一个 tasks.json 文件来存储任务列表,每个任务是一个字典:
json
[
{"id": 1, "name": "写一篇掘金文章", "done": false},
{"id": 2, "name": "散步30分钟", "done": true}
]
程序启动后,让用户输入命令:
list显示所有任务add <任务名>添加任务done <id>标记任务为完成exit退出
2. 代码实现
创建 todo.py,代码如下:
python
import json
import os
TASKS_FILE = "tasks.json"
def load_tasks():
if not os.path.exists(TASKS_FILE):
return []
with open(TASKS_FILE, "r", encoding="utf-8") as f:
return json.load(f)
def save_tasks(tasks):
with open(TASKS_FILE, "w", encoding="utf-8") as f:
json.dump(tasks, f, ensure_ascii=False, indent=2)
def show_tasks(tasks):
if not tasks:
print("✨ 暂无任务,快去添加吧!")
return
for task in tasks:
status = "✅" if task["done"] else "⏳"
print(f"{status} [{task['id']}] {task['name']}")
def add_task(tasks, name):
new_id = max([t["id"] for t in tasks], default=0) + 1
tasks.append({"id": new_id, "name": name, "done": False})
save_tasks(tasks)
print(f"✔ 已添加任务:{name}")
def complete_task(tasks, task_id):
for task in tasks:
if task["id"] == task_id:
task["done"] = True
save_tasks(tasks)
print(f"🎉 完成任务:{task['name']}")
return
print("❌ 未找到该编号的任务")
def main():
tasks = load_tasks()
print("📋 终端待办工具 (输入 help 查看命令)")
while True:
cmd = input("> ").strip()
if cmd == "list":
show_tasks(tasks)
elif cmd.startswith("add "):
name = cmd[4:].strip()
if name:
add_task(tasks, name)
else:
print("请填写任务内容")
elif cmd.startswith("done "):
try:
task_id = int(cmd[5:].strip())
complete_task(tasks, task_id)
except ValueError:
print("请输入正确的任务编号")
elif cmd == "help":
print("可用命令:list, add <任务名>, done <编号>, exit")
elif cmd == "exit":
print("👋 再见!")
break
else:
print("未知命令,输入 help 查看帮助")
if __name__ == "__main__":
main()
3. 使用效果
运行 python todo.py,然后就可以愉快地管理任务了:
text
📋 终端待办工具 (输入 help 查看命令)
> add 学习掘金小册
✔ 已添加任务:学习掘金小册
> add 整理笔记
✔ 已添加任务:整理笔记
> list
⏳ [1] 学习掘金小册
⏳ [2] 整理笔记
> done 1
🎉 完成任务:学习掘金小册
> list
✅ [1] 学习掘金小册
⏳ [2] 整理笔记
> exit
👋 再见!
所有任务会自动保存在 tasks.json 中,下次打开依然存在。
4. 扩展思路
你可以根据自己的需求继续增强这个工具:
- 添加 截止日期 字段,支持按时间排序
- 增加 编辑任务 功能
- 用
argparse做成更规范的命令行工具 - 同步到云端(比如接入 GitHub Gist)
这个小工具虽然简单,但涵盖了文件 I/O、JSON 处理、命令行交互等基础知识点,很适合作为 Python 初学者的练手项目。