你是否曾经面对这样的场景:桌面堆满了各种文件——工作文档、下载的图片、临时保存的压缩包、随手放的安装包……想找一个文件,翻来覆去半天找不到,甚至不知道从何下手。手动整理?几百个文件一个个拖拽,想想就头大。
今天,教你用Python写一个自动文件分类归档脚本,只需运行一次,所有文件按类型乖乖归类到不同文件夹,从此桌面清爽,找文件一秒定位!
指定要整理的文件夹(比如桌面路径)。
遍历该文件夹下所有文件(跳过文件夹和本脚本自身)。
获取每个文件的扩展名(如 .jpg, .pdf, .docx)。
根据扩展名映射到对应的类别(如“图片”、“文档”、“视频”等),并创建对应文件夹。
将文件移动到对应的类别文件夹中。
遇到同名文件自动重命名(加数字后缀),避免覆盖。
import osimport shutilfrom pathlib import Path# ================== 配置区域 ==================#TARGET_DIR = r"C:\Users\你的用户名\Desktop" # 要整理的文件夹路径(默认桌面)TARGET_DIR = r"C:\Users\Administrator\Desktop"# =============================================# 扩展名分类映射(可按需增删)EXTENSION_CATEGORIES = {# 图片'Images': ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.tiff'],# 文档'Documents': ['.pdf', '.docx', '.doc', '.txt', '.xlsx', '.xls', '.pptx', '.ppt', '.md', '.csv'],# 视频'Videos': ['.mp4', '.mkv', '.flv', '.avi', '.mov', '.wmv'],# 音频'Audios': ['.mp3', '.wav', '.aac', '.flac'],# 压缩包'Archives': ['.zip', '.rar', '.7z', '.tar', '.gz'],# 可执行程序'Executables': ['.exe', '.msi', '.bat', '.sh'],# 代码文件'Code': ['.py', '.js', '.html', '.css', '.cpp', '.c', '.java', '.php'],# 其他'Others': [] # 未匹配到的都放这里}def get_category(ext):"""根据扩展名返回类别名""" ext = ext.lower() for category, extensions in EXTENSION_CATEGORIES.items(): if ext in extensions: return category return 'Others' # 默认其他def safe_move(src_path, dest_dir):"""安全移动文件,如果目标已存在则自动重命名""" filename = os.path.basename(src_path) name, ext = os.path.splitext(filename) dest_path = os.path.join(dest_dir, filename) counter = 1 while os.path.exists(dest_path): new_filename = f"{name}_{counter}{ext}" dest_path = os.path.join(dest_dir, new_filename) counter += 1 shutil.move(src_path, dest_path) return dest_pathdef organize_folder(folder_path):"""整理指定文件夹下的所有文件""" if not os.path.isdir(folder_path): print(f"错误:路径 {folder_path} 不存在或不是文件夹") return print(f"开始整理文件夹:{folder_path}")# 遍历文件夹内所有条目 for item in os.listdir(folder_path): item_path = os.path.join(folder_path, item)# 跳过文件夹 if os.path.isdir(item_path): continue# 跳过本脚本自身(以防把自己移动了) if item == os.path.basename(__file__): continue# 获取文件扩展名 ext = os.path.splitext(item)[1] category = get_category(ext)# 创建目标文件夹(如果不存在) category_dir = os.path.join(folder_path, category) os.makedirs(category_dir, exist_ok=True)# 移动文件 new_path = safe_move(item_path, category_dir) print(f"移动:{item} -> {category}/") print("✅ 整理完成!")if __name__ == "__main__": organize_folder(TARGET_DIR)
🚀 如何使用将上述代码复制到一个新建的 .py 文件(例如 file_organizer.py)。
修改 TARGET_DIR 为你想要整理的文件夹路径(默认为桌面)。
运行.py文件即可
等待片刻,所有文件就会按类型乖乖进入对应的子文件夹。
整理前桌面:

执行脚本后,只需1S,桌面立即变得清爽。整理后桌面:

🔧 自定义技巧
修改分类规则:在 EXTENSION_CATEGORIES 字典中添加、删除或修改扩展名列表。
排除特定文件夹:如果想忽略某些已有文件夹,可以在循环中增加判断。
添加日期归档:可以将文件按修改年份分文件夹(进阶需求)。
运行脚本前建议先备份重要文件,或先在小文件夹测试。
脚本不会删除任何文件,只是移动位置,放心使用。
用Python几十行代码,就能彻底告别杂乱无章的桌面。学会这个技巧,不仅能提升工作效率,还能在同事面前秀一把“程序员的优雅整理术”。快动手试试吧,让Python帮你保持桌面清爽,找文件不再崩溃!