去年十一月开始的,第一本书是《Python Crash Course》。我没做刷题计划,也没准备转行,只是想让每天重复的事情少一点。下面按时间记一下走过的路、写过的三个工具,还有踩过的坑。

时间线:这一年

  • 2025.11 基础语法。变量、列表、字典、函数、文件读写,把书上的练习从头到尾敲了一遍。
  • 2026.02 自动化脚本。os、shutil、requests、openpyxl,写批量重命名、整理文件、填表格这类用完就省事的小工具。
  • 2026.06 数据处理。用 pandas 读 CSV,用 matplotlib 画图,第一次把一堆数字变成别人一眼能看懂的东西。
  • 2026.09 现在在学 FastAPI 和 SQL。目标很具体:给手边那几个脚本加一个能在浏览器里打开的界面。

最近写的一段代码

整理下载文件夹的脚本。它一点都不聪明,但这两个月帮我省掉了无数次手动拖拽。

from pathlib import Path
import shutil

CATEGORIES = {
    ".pdf": "docs",
    ".jpg": "photos",
    ".mp4": "videos",
    ".zip": "archive",
}

def tidy(folder: Path) -> int:
    """按后缀把文件分到对应目录,返回移动的数量。"""
    moved = 0
    for file in folder.iterdir():
        if not file.is_file():
            continue
        target = CATEGORIES.get(file.suffix.lower(), "other")
        dest = folder / target
        dest.mkdir(exist_ok=True)
        shutil.move(str(file), dest / file.name)
        moved += 1
    return moved

if __name__ == "__main__":
    downloads = Path.home() / "Downloads"
    print(f"整理完成,移动了 {tidy(downloads)} 个文件")

tidy.py · 用 pathlib 和 shutil 处理文件,比字符串拼路径省心很多

三个自用工具

  • 下载文件夹整理器:上面那段代码的完整版,加了配置文件、运行日志,还有「跳过今天刚下载的文件」的保护,免得误伤正在下载的东西。
  • 背单词提醒:每天早上 8 点,从 Anki 导出的文件里挑 20 个到期的词,整理成一条消息发到手机上。复习提醒不再靠自律。
  • 记账小工具:命令行里记一笔,月底按分类汇总,画一张支出图。数字变清楚之后,才知道钱花在了哪里。

踩过的坑

  • 一开始就装 Anaconda:结果系统里几个 Python 环境互相打架,装什么都报错。后来老老实实用 venv,一个项目一个环境,干净省心。
  • 用 print 调试了一个月:后来才学会用 logging 和编辑器断点。print 不是不能用,而是别让它留在提交的代码里。
  • 一上手就想写「框架」:那时候连函数都没写熟。先把重复劳动自动化,是最快能拿到正反馈的做法。
  • 不看报错信息:前半年一遇到 traceback 就复制去搜。后来逼自己从最后一行往前读,很多问题其实自己就能看出来。

接下来想把 FastAPI 那个界面做出来,让手边这几个脚本都收在一个页面上。做出来了再写一篇。