症状总是一样
在家里运行脚本,没有任何报错,却什么事也没发生。通知机器人很安静,晚间整理流程只留下空白结果。原因每次都相同:在 Windows 设备上开发时,把文件夹位置原封不动写进了代码。
我们的环境
设备共有三台:盘符各不相同的两台 Windows 设备,加上一台 Mac mini。在一处运行良好的脚本,到了另一处却盯着一个根本不存在的文件夹。偏偏它没有任何异常就正常结束,连称它失败都显得牵强。同样的事故就这样重复了四次。
Before
• 文件夹路径直接写在代码里
• 换一台设备运行,就读到空文件夹并悄悄结束
• 出事时只能逐个文件修补,修完就算了
After
我们写了一个公共模块,从脚本自身所在位置推算基准文件夹,所有脚本都只引用它。
from pathlib import Path
BASE = Path(__file__).resolve().parent.parent
def repo(name):
return BASE / name
设备换了也没关系,因为一律以脚本所在位置为准,盘符不再重要。真正必要的例外,则用一行注释标明豁免。
同时加上监控
每次同步时,一个小型检查脚本会统计还残留几行写死的路径并汇报。数字减少说明整理有进展,数字增加就是有新的写死路径混进来的警报。
学到的事
1. 与其订下「不许这样写」的规矩,不如让工具用数字替你计数,效果更持久。
2. 没有报错就结束的失败,代价最高。
3. 例外不要藏起来,要标明出来让大家看得见。
改动的只是几行代码,真正改变的是一份安心:不管在哪台设备上运行,结果都一样。