一、痛点:文件 chaos
桌面、下载目录、微信接收文件……日积月累几百个文件,想找个上月的合同翻半天。手动分类?又是一下午。
解法:用 Python 扫描目录,按扩展名 / 日期 / 关键字自动移动到对应文件夹。
二、核心原理
- •
os.listdir() / Path.iterdir() 遍历文件 - •
os.path.splitext() / Path.suffix 取扩展名 - •
os.makedirs() / Path.mkdir() 建分类目录
三、核心代码
import os, shutil
from pathlib import Path
base = Path.home() / "Downloads"# 下载目录
types = {".pdf": "PDF文档", ".xlsx": "Excel表格",
".png": "图片", ".docx": "Word文档"}
for f in base.iterdir():
if f.is_file():
dest = base / types.get(f.suffix.lower(), "其他")
dest.mkdir(exist_ok=True)
shutil.move(str(f), str(dest / f.name)) # 按类型归位
print(f.name, "→", dest.name)
进阶:按“修改日期”归档到 2026-08 这样的月份文件夹:
import time
from datetime import datetime
t = datetime.fromtimestamp(f.stat().st_mtime)
month_dir = base / f"{t.year}-{t.month:02d}"
month_dir.mkdir(exist_ok=True)
shutil.move(str(f), str(month_dir / f.name))
四、界面化(PyQt5 整理助手)
选“要整理的文件夹” + “整理规则”(按类型 / 按月份 / 按关键字),点“开始整理”,实时显示搬了哪些、去了哪。带“模拟运行”开关,先预览不真移,确认无误再执行。
五、常见坑
- 1. 同名覆盖:目标目录已有同名文件,
shutil.move 会直接覆盖,先判断 dest.exists()。 - 2. 正在使用:文件被 Excel / 微信占用时移动失败,捕获异常跳过。
- 3. 路径太长:Windows 路径超 260 字符报错,尽量短路径或
\\?\ 前缀。 - 4. 误移系统文件:限定扫描目录,别拿
C:\ 开刀。 - 5. 删 vs 移:新手用
move 别用 os.remove,移错还能找回来。
六、工具怎么用
七、小结
os / pathlib 是自动化的“搬运工”。记住:先模拟、后执行、防覆盖、别动系统盘,文件管理从此随心。
八、社媒文案(公众号 + 小红书)
公众号标题:下载文件夹乱成垃圾堆?10 行 Python 代码,文件自动归位
小红书正文:
下载目录乱到找不到上月的合同?😤 我用 os + pathlib 写了个自动整理脚本,按类型/月份一键归位,PDF 进文档夹、xlsx 进表格夹,3 秒清爽!还加了“模拟运行”,先看后动不翻车~
标签:
#Python#文件整理#办公自动化#效率工具#pathlib#桌面整理#打工人#懒人神器