用 AI 提示词 + Python 10 分钟搞定文件批量整理(附完整脚本与避坑指南)
摘要:下载目录乱成一锅粥?本文用 Python + AI 提示词做一个可复用的"文件批量整理"脚本,把 3 小时的手工活儿压缩到 10 分钟。附完整可运行代码、3 个真实避坑点,以及一条能让 AI 一次产对代码的提示词模板。
文章目录
一、背景与需求:为什么这份活非干不可
几乎每个开发者的下载目录都是一场灾难:微信收到的安装包、爬虫抓的 csv、随手存的设计稿、各种 .tmp 临时文件挤在一起。按类型和日期归好类,手点要一两个小时;每次下载完都要整理一次,累且低效。
需求归纳起来只有三条:
- 按文件类型归到子目录(图片、文档、压缩包、安装包……)
- 按下载日期再细分(避免同年同类全堆一起)
- 只搬运、不误删,撞名时自动避让
这种"逻辑清晰但写起来琐碎"的脚本,正是 AI 最擅长的。但直接让 AI 一把梭,往往会得到"能跑但一堆坑"的代码。正确姿势是:用提示词让 AI 生成初稿,你负责审查和技术把关。
二、技术选型:为什么是 Python + 提示词
整理文件是典型的文件系统操作,Python 的标准库 os 和 shutil 就够了,不用装任何第三方依赖,哪里都能跑。选 Python 而不是 Shell 脚本,是因为它的跨平台一致性和可读性,后续想加规则(按大小、按修改时间)也容易。
而"提示词"在这里的角色,是把需求精确翻译成代码。关键在于:给足上下文、说清约束、要它先给方案再给代码。下面这版提示词是我用下来产出最稳的。
三、核心提示词(复制即用)
你是资深 Python 工程师,帮我写一个"文件批量整理"脚本。
背景:
- 一个目录里堆满各种文件,类型杂、无规律
- 需要按文件类型分到不同子文件夹,再按日期细分一层
- 不希望删除任何原文件,只是移动
约束:
- 只用标准库 os / shutil,不引入第三方依赖
- 文件类型映射用字典维护(图片、文档、压缩包、安装包、其他)
- 移动时如果目标已存在同名文件,自动加序号重命名,绝不能覆盖
- 输出每一步移动的日志,便于核对
- Windows 和 macOS 都能跑,文件路径用 pathlib 处理,避免乱码
输出要求:
- 先给出实现思路(3-5 条),再给完整代码
- 代码里关键逻辑加中文注释
- 最后列出 3 个最容易踩的坑
让 AI 先讲思路再给代码,能逼它把逻辑理清,比直接甩代码靠谱得多。你拿到的初稿,重点审查两处:类型映射是否完整、撞名避让是否真的不会覆盖。
四、完整代码(可运行)
from pathlib import Path
import shutil
# 文件类型 -> 目标子目录 的映射
TYPE_MAP = {
"图片": {".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg"},
"文档": {".pdf", ".docx", ".xlsx", ".pptx", ".txt", ".md"},
"压缩包": {".zip", ".rar", ".7z", ".tar", ".gz"},
"安装包": {".exe", ".dmg", ".msi", ".apk"},
}
def classify(path: Path) -> str:
"""按后缀判断归到哪个分类;未知类型进'其他'"""
suffix = path.suffix.lower()
for folder, exts in TYPE_MAP.items():
if suffix in exts:
return folder
return "其他"
def unique_dest(dest: Path) -> Path:
"""目标已存在同名文件时,自动加序号,绝不覆盖"""
if not dest.exists():
return dest
stem, suffix = dest.stem, dest.suffix
i = 1
while True:
cand = dest.with_name(f"{stem}_{i}{suffix}")
if not cand.exists():
return cand
i += 1
def organize(src_dir: Path) -> None:
if not src_dir.exists():
print(f"目录不存在: {src_dir}")
return
for item in src_dir.iterdir():
if item.is_dir():
continue # 只整理文件,跳过子文件夹
folder = classify(item)
# 按 "分类/日期" 建目录
date_dir = src_dir / folder / item.stat().st_mtime.strftime("%Y-%m")
date_dir.mkdir(parents=True, exist_ok=True)
dest = unique_dest(date_dir / item.name)
shutil.move(str(item), str(dest))
print(f"移动: {item.name} -> {date_dir} (重名处理: {dest.name})")
if __name__ == "__main__":
organize(Path("./downloads")) # 改成你的目标目录
说明:这里日期我取的是 st_mtime(文件最后修改时间)。如果你是按"下载日期",一般修改时间就够用;更精确的做法是改成 st_ctime(创建时间),但它在不同平台语义有差异,需要你按实际场景取舍——这正是应该人工把关的那类细节。
五、运行效果
把脚本放到乱糟糟的目录同层,改一下 organize(Path("./downloads")) 里的路径,直接 python organize_files.py。会看到一串移动日志,文件名被归类到 图片/2026-09/、文档/2026-09/ 这类子目录。建议你实际跑一遍,并把执行前后的目录对比截个图——CSDN 的算法对"有实操、有图"的文章权重更高。
六、避坑指南(3 个最容易踩的坑)
- 路径乱码:Windows 下中文路径容易出问题。一定用
pathlib.Path而不是手拼字符串,给 ai 的提示词里也明确写这条,能省掉一大半麻烦。 - 误覆盖源文件:这是最致命的。撞名时必须先查
exists()、再自动加序号,绝不能直接move覆盖。上面unique_dest就是干这个的。 - 误判类型:
.tar.gz这类双后缀,suffix只取到.gz。如果你有这种文件,要么在映射里单独加,要么提醒 AI 处理复合后缀,别让它静默归进"其他"。
七、把提示词沉淀成可复用的模板
上面那版提示词的价值,不只这一次。把"背景 + 约束 + 输出要求"这个结构固定下来,你就有了一个可复用的"生成运维小脚本"提示词框架:换掉背景描述,就能让 AI 帮你写批量改名、日志清理、巡检汇总……所有类似的琐碎脚本。
八、小结
AI 不是替你把活干完,而是把"能说清楚需求的活"交给它,把"需要判断的活"留给你。给足上下文、让它先讲思路、再审查关键点(撞名、乱码、类型映射),你就能用 10 分钟换来本要 3 小时的手工整理。
如果这篇对你有用,欢迎点赞 + 收藏;技术细节有疑问的直接评论区聊,我看到都会回。源码逻辑都在上面,复制即用,记得跑一遍配个图更保险。
更多推荐

所有评论(0)