别再急着 pip install:三个标准库模块就能搞定日常文件处理
很多人一写 Python 脚本处理文件,第一反应就是 pip install 某个第三方库。但在动手之前,不妨先看看标准库里已经躺着三件趁手的工具:os、shutil、glob。它们加起来不需要任何额外依赖,却足以覆盖日常文件处理里八成以上的场景。这篇文章就用实例走一遍,看看它们到底能干什么。
用 glob 一行代码批量找文件
glob 模块的作用是用通配符匹配文件路径,本质上是把 shell 里的 *.txt 搬进了 Python。它最大的价值是省去手写递归遍历的代码。
1 | |
** 配合 recursive=True 就能实现递归查找,比 os.walk 手写循环直观得多。如果要按多个条件筛选,glob 的返回结果本身就是普通列表,直接丢给列表推导式继续过滤即可,比如只要文件名里带”备份”的。
用 shutil 完成复制、移动和删除
shutil 是”高级文件操作”的集合,日常用的高频操作全在这里:copy2 复制并保留元数据、move 移动(跨盘时自动降级为复制+删除)、rmtree 递归删除目录。
1 | |
这里有个经常踩的坑:shutil.move 的目标目录如果不存在,它不是帮你创建,而是把源文件直接”重命名”成目标路径,导致文件跑到了意想不到的地方。所以移动前先 os.makedirs(dst, exist_ok=True) 才是稳妥写法。
用 os 遍历目录与批量改名
os 模块负责最底层的路径和目录操作。批量改名是它最常见的用途,配合 os.rename 和一点字符串处理,几行代码就能把一堆杂乱命名的文件整理整齐。
1 | |
需要逐级遍历目录时,os.walk 会依次产出 (当前目录, 子目录列表, 文件列表) 三元组,配合 os.path.getsize 可以统计目录体积、找超大文件:
1 | |
综合案例:把散落的图片按月份归档
把三件套组合起来,就是一个能直接用的归档脚本:扫描某目录下所有图片,按修改月份归入对应子目录。
1 | |
整个过程只用了标准库:glob 负责找文件,os 负责时间戳和建目录,shutil 负责移动。没有 pip install,没有虚拟环境,在任何有 Python 的机器上都能直接跑。
总结
glob 让”找文件”变得一行搞定,shutil 把复制、移动、删除封装得安全可靠,os 提供了底层遍历和命名的全部能力。三者分工明确又互相配合,足以应付绝大多数日常文件批处理。下次动手写脚本前,先想想这三个老朋友,很可能根本不需要引入任何第三方依赖——少装一个包,就少一份版本冲突和安全隐患。