大家好,我是正在实战各种AI项目的程序员晚枫。
你有没有这样的经历?打开下载文件夹,里面几百个文件乱七八糟地堆在一起——PDF报告、微信图片、安装包、压缩包……找一个文件要翻半天,强迫症看了简直受不了。
💡 场景:你下载了一堆东西,有PDF报告、照片、压缩包,每次要找某个文件都要翻半天。更烦的是,同一个文件下载了好几次,重名的到处都是。
以前我每个月都要手动整理一次,费时费力。后来我花了一个下午写了50行Python代码,从此下载文件夹自动分类,再也不用操心了。
今天这个实战项目,就是自动整理下载文件夹。只需要50行代码,就能让你的Downloads文件夹井井有条。
项目需求分析
问题
下载文件夹通常很乱:文档、图片、视频混在一起,找文件很困难。
解决方案
按文件类型自动分类:
- 图片 → Images/
- 文档 → Documents/
- 视频 → Videos/
- 压缩包 → Archives/
- 代码 → Code/
- 音频 → Audio/
技术选型
| 方案 | 优点 | 缺点 |
|---|---|---|
| os + shutil | 不用装第三方库 | API不够优雅 |
| pathlib + shutil | 代码简洁,推荐 | Python 3.4+ |
| 第三方库send2trash | 误删可恢复 | 需要安装 |
💡 我的选择:用pathlib + shutil,纯标准库,零依赖。
完整代码
1 | import os |
运行效果
运行前,下载文件夹是这样的:
1 | Downloads/ |
运行程序:
1 | python organize_downloads.py |
试运行输出:
1 | 🔍 试运行模式(不会实际移动文件) |
正式运行后,最终目录结构:
1 | Downloads/ |
代码关键点解析
1. pathlib.Path - 优雅的路径操作
1 | from pathlib import Path |
2. 处理重名文件
如果目标文件夹已有同名文件,自动加序号,不会覆盖:
1 | # 重名处理逻辑 |
3. 试运行模式(dry_run)
这是我自己踩坑后加的功能。一开始直接运行,结果把不该移动的文件也移了,后悔都来不及。
1 | if dry_run: |
💡 强烈建议:先跑一遍
dry_run=True,确认没问题再正式运行。
4. 文件大小格式化
1 | def format_size(size_bytes): |
进阶功能
按日期分类
1 | from datetime import datetime |
按日期分类后的目录结构:
1 | Downloads/ |
查找重复文件
1 | import hashlib |
清理大文件
1 | def find_large_files(directory, threshold_mb=100): |
避坑指南
1. 文件被占用
1 | # ❌ 问题:文件正在被其他程序使用,移动会失败 |
2. 中文文件名乱码
1 | # ❌ 问题:Windows下中文路径可能乱码 |
3. 符号链接和快捷方式
1 | # ❌ 问题:误移动快捷方式 |
4. 不要移动正在运行的脚本
1 | # ❌ 危险:脚本把自己移动了,程序直接崩 |
🔥 进阶:定时自动整理
用schedule库实现定时自动整理,每天自动跑一次:
1 | import schedule |
性能优化
如果你的下载文件夹有上万个文件,可以考虑这些优化:
1 | import os |
💡 但是:文件操作通常不是CPU密集型,大多数情况下单线程就够了。只有上千个文件时才需要考虑多线程。
📚 推荐:Python 零基础实战营
系统学习Python,推荐这个免费入门课程 👇
| 特点 | 说明 |
|---|---|
| 🎯 专为0基础设计 | 门槛低,上手快 |
| 📹 配套视频讲解 | 配合文章学习效果更好 |
| 💬 专属答疑群 | 遇到问题有人带 |
| 🎁 实体书赠送 | 优秀学员送《Python编程从入门到实践》 |
本讲小结
用到的知识:
| 知识 | 用途 |
|---|---|
pathlib.Path | 路径操作、文件遍历 |
os.listdir / iterdir | 遍历文件 |
dict 字典 | 文件类型映射 |
for 循环 | 遍历每个文件 |
if 条件判断 | 判断文件类型 |
shutil.move | 移动文件 |
hashlib | 计算文件MD5(查重) |
datetime | 获取文件修改时间 |
下节预告
第二个实战项目是自动发送邮件报告——每天自动生成数据报告发给老板!
课程导航
上一篇: Python常用标准库
下一篇: Python实战项目-自动发送邮件报告
PS:文件自动化整理是每个程序员都应该会的技能。学会这个,节省大量找文件的时间!
🎓 AI 编程实战课程
想系统学习 AI 编程?程序员晚枫的 AI 编程实战课 帮你从零上手!
- 👉 免费试看:B站免费试看前3讲,先看看适不适合自己
- 👉 课程报名:点击这里报名,现在报名还送书📖


