你的Downloads文件夹有多少文件?我数了数:487个,从2019年的PDF到昨天的截图,全挤在一起。
周末花了一下午,用Python写了个自动整理脚本。35行代码,一个watchdog库,后台常驻运行。现在新文件进来,自动按类型进子文件夹。
为什么开发者都需要这个
每个我认识的技术人,Downloads都是灾难现场。合同、发票、设计稿、安装包、代码片段——全堆在根目录。手动整理?下周又乱。
文件系统的痛点在于:你知道该分类,但分类动作本身消耗意志力。自动化一次,永久解决。
这个脚本的核心逻辑很简单:监控文件夹→识别扩展名→移动到对应目录。watchdog库负责监听文件系统事件,os和shutil处理移动操作。
关键设计:1秒延迟。文件创建事件触发时,下载可能还没完成,直接移动会报错。time.sleep(1)等下载收尾,再执行操作。
代码拆解:三个核心函数
FILE_TYPES字典定义了7个分类:Images、Documents、Videos、Audio、Archives、Code、Installers。每个分类对应一组扩展名,比如".py"、".js"、".html"都归到Code。
get_destination()遍历字典匹配扩展名,没匹配到的丢进"Other"。这个兜底很重要——未知文件不会消失,只是暂时没家。
SortHandler继承watchdog的FileSystemEventHandler,重写on_created方法。这是事件驱动编程的典型模式:你不需要轮询检查,系统有新文件就通知你。
主循环用Observer注册处理器,recursive=False只监控当前层级。如果你想连子文件夹一起管,改成True就行。
5个扩展方向
基础版本跑起来后,可以考虑加功能。按日期子分类是个实用改进:Documents下面再分2026-04、2026-05,避免单文件夹文件过多。
重复文件检测也常见。用hashlib算文件哈希,相同内容只保留一份,省空间。安全移动函数能处理文件名冲突,自动重命名而不是覆盖。
日志记录到文件、排除特定路径、支持多文件夹监控——这些都能按需叠加。35行是起点,不是终点。
最后跑起来那刻,看着测试文件自动归位,有点小时候看多米诺骨牌倒下的爽感。后台进程开着,Ctrl+C随时停,干净。
你的Downloads现在多少文件?有没有试过自动化整理,还是靠手动硬撑?
热门跟贴