引言
你是不是也有这样的困扰:
- 桌面堆满了下载的文件,找什么都要翻半天
- 下载文件夹里全是乱七八糟的 APK、ZIP、EXE
- 每次需要某个文件,都要在几百个文件里大海捞针
我之前的下载文件夹有 847 个文件,最老的还是 2019 年的。直到我写了这个脚本,彻底解决了这个问题。
今天教你用 Python 写一个自动文件整理脚本,代码不到 50 行,以后再也不用手动整理!
一、原理分析
1.1 核心思路
文件整理的本质就是分类 + 移动:
- 遍历目标目录下的所有文件
- 根据文件后缀名判断类型
- 创建对应的分类文件夹
- 将文件移动到对应文件夹
1.2 技术栈
- Python 3.6+:使用
pathlib模块处理路径 - shutil:文件移动操作
- os:系统交互(可选)
所有模块都是 Python 标准库,无需额外安装
二、完整代码
2.1 基础版本(10 行核心代码)
import os
import shutil
from pathlib import Path
# 配置区域:修改为你自己的路径
SOURCE_DIR = Path("D:/下载") # 要整理的目录
DEST_DIR = Path("D:/整理后") # 整理后的目标目录
# 文件分类规则(可根据需要扩展)
FILE_TYPES = {
"图片": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp", ".ico"],
"文档": [".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".txt", ".md"],
"视频": [".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv"],
"音频": [".mp3", ".wav", ".flac", ".aac", ".ogg"],
"压缩包": [".zip", ".rar", ".7z", ".tar", ".gz", ".bz2"],
"程序": [".exe", ".msi", ".apk", ".dmg", ".deb"],
"代码": [".py", ".js", ".java", ".cpp", ".c", ".html", ".css"],
}
def organize_files():
for file in SOURCE_DIR.iterdir():
if file.is_file():
ext = file.suffix.lower()
category = "其他"
for name, extensions in FILE_TYPES.items():
if ext in extensions:
category = name
break
target_dir = DEST_DIR / category
target_dir.mkdir(exist_ok=True)
shutil.move(str(file), str(target_dir / file.name))
print(f"已移动:{file.name} -> {category}/")
if __name__ == "__main__":
organize_files()
print("整理完成!")
三、进阶功能
3.1 按日期自动创建子文件夹
from datetime import datetime
date_folder = datetime.fromtimestamp(file.stat().st_mtime).strftime("%Y-%m")
(target_dir / date_folder).mkdir(exist_ok=True)
shutil.move(str(file), str(target_dir / date_folder / file.name))
3.2 跳过重复文件
target_path = target_dir / file.name
if target_path.exists():
base, ext = file.stem, file.suffix
counter = 1
while target_path.exists():
new_name = f"{base}_{counter}{ext}"
target_path = target_dir / new_name
counter += 1
shutil.move(str(file), str(target_path))
四、实战应用
4.1 整理桌面
SOURCE_DIR = Path.home() / "Desktop"
DEST_DIR = Path.home() / "Desktop" / "已整理"
4.2 监控文件夹(实时整理)
需要安装:pip install watchdog
4.3 定时任务
Windows 任务计划程序:打开任务计划程序 → 创建基本任务 → 设置触发器 → 启动 python.exe
Linux/Mac crontab:0 10 * * * /usr/bin/python3 /path/to/organize.py
五、常见问题
Q1: 运行后没有反应?
检查路径是否正确、是否有权限、添加 print() 调试
Q2: 中文文件名乱码?
添加 sys.stdout.reconfigure(encoding='utf-8')
Q3: 某些文件移动失败?
文件被占用或权限不足,用 try-except 处理
六、效果对比
整理前:847 个文件混在一起
整理后:按图片/文档/视频/程序/压缩包分类
耗时:3 秒
结语
这个脚本我用了 3 年,至今还在维护。核心代码就 10 行,但能解决实际问题。
关键不是代码有多复杂,而是能帮你节省时间。
如果你有更多想法,欢迎在评论区交流!