本节摘要:自动化是新手村的最后一颗天赋点——把重复三次以上的手工操作交给脚本。本节讲判定标准、入门路径(别名、脚本、任务运行器三层),并用一个真实的"批量整理练习文件"案例展示完整过程。
技能树位置:建立在前三件装备之上——环境能跑、有存档意识、编辑器趁手之后,自动化才有稳定的施展舞台。它也是通往第二章的第一块跳板:把学习方法本身写成程序,正是后面间隔复习脚本的雏形。
自动化的第一课不是写脚本,而是克制。写脚本本身要花时间,判断一个任务值不值得自动化,我用的判定标准很朴素:同一个手工操作重复到第三次,就值得考虑写下来;每周都要做一次的,几乎一定值得。
反过来,一次性操作、路径不确定的操作、五秒钟就能完成的操作,都不值得——为它们写脚本省下的时间,通常不够抵消调试脚本本身的开销。
按投入从低到高,自动化分三层:
| 层级 | 形态 | 适合的操作 | 上手成本 |
|---|---|---|---|
| 命令别名 | 给长命令起短名 | 每天敲的高频命令 | 几分钟 |
| 脚本 | 把一串命令存成可执行文件 | 多步骤的固定流程 | 半小时起 |
| 任务运行器 | 声明任务与依赖,一键执行 | 构建、测试、部署组合 | 需要一点学习 |
新手从第一层起步,第二层练手,第三层等项目需要时再碰。
第一层,命令别名。每天都要进练习目录,敲一长串切换路径的命令,为它起个短名之后:
$ alias gp='cd D:/study/python-practice' $ gp $ pwd D:/study/python-practice
两个字符替代一长串路径,一年省下的敲击时间相当可观,更重要的是切断了"好麻烦所以今天先不练了"的心理链路。
第二层,脚本。把重复流程写成一小段程序,这是自动化的主战场,下面的案例会完整演示。
第三层,任务运行器。项目里出现"改代码、跑测试、重新构建"的固定组合时,把组合声明进一个任务文件,之后一条命令触发全链路。个人练习期一般用不到,知道有这一层即可。
背景:学习者小杨每周日晚整理一周的练习文件:练习文件按周散在下载目录里,名字混乱,还要手动改名归档到对应周的文件夹。每周花二十分钟,且经常漏掉几个文件。
操作:她先手工把流程写清楚——扫描下载目录里指定扩展名的文件,按修改日期判断属于哪一周,移动到对应周文件夹并在文件名前加上日期前缀。然后用她正在学的语言把流程写成脚本(以下为核心逻辑的等价演示):
from pathlib import Path from datetime import datetime, timedelta import shutil download = Path.home() / "Downloads" archive = Path("D:/study/weeks") today = datetime.now() monday = today - timedelta(days=today.weekday()) # 本周一 for f in download.glob("*.py"): age_days = (datetime.now() - datetime.fromtimestamp(f.stat().st_mtime)).days week_folder = archive / f"week-{monday.strftime('%m%d')}" week_folder.mkdir(exist_ok=True) stamp = datetime.fromtimestamp(f.stat().st_mtime).strftime("%m%d") shutil.move(f, week_folder / f"{stamp}-{f.name}") print(f"归档 {f.name} -> {week_folder.name}")
结果:第一次运行输出归档清单,十二个练习文件各归各位。此后每周整理变成双击一次,二十分钟降到二十秒。脚本偶尔遇到新情况(比如文件名重复),她再补一两行处理,脚本本身也成了练习素材。
解读:注意她的顺序——先用两周手工做这件事,把流程彻底想清楚,再写脚本。跳过手工阶段直接写脚本,是新手自动化最常见的翻车原因:流程还没稳定,脚本就要跟着天天改。
变式:同样的骨架可以套到别的场景——批量重命名截图、汇总各周练习的代码行数、把笔记里的待复习条目导出来。骨架不变,换的只是扫描的目录和处理的动作。
💡 关键直觉:自动化脚本是你自己写的第一个"真实用户"的程序——用户就是明天的你。给未来的自己省时间,是练习期最有正反馈的项目题材,也是第二章"主动学习"里输出式练习的理想对象。
⚠️ 常见坑:脚本里写移动、删除这类不可逆操作时,第一次一定先跑"演练模式"——只打印将要做什么,不真动文件。确认输出符合预期,再放开执行。
对学习者而言,有三件高频琐事最值得优先交给脚本,它们共同的特色是"每周必做、步骤固定、出错代价小":
第一件,练习环境的快速复位。每天开始练习前要切换到练习目录、激活隔离环境、打开当天的练习文件——三步写成一个脚本后,开始练习的摩擦降到接近零,而摩擦正是"今天先不练了"的主要来源。
第二件,练习记录的自动统计。1.4 节这类脚本攒到第三周,你会想要一份"本周写了多少行、提交了几次"的汇总。用版本历史直接统计即可:
$ git log --since="1 week ago" --oneline | find /c /v "" 5
一条命令数出本周的提交数——它同时是 5.4 节成长曲线指标的数据来源。把它包进每周复位脚本,周报自动生成。
第三件,备份的自动化。练习成果虽小,攒三个月也是几百张知识卡片与若干工具。用计划任务每周把关键目录同步到另一块盘或网盘,一次配置,长期免操心。
这三件事都不难,合起来却把"练习的启动成本"和"成果的保存成本"压到了最低——自动化的终极目的不是炫技,是让你把意志力全部留给真正的学习。