用 Python 自动整理文件、重命名、分类电脑文件夹
用 Python 自动整理文件、重命名、分类电脑文件夹告别混乱的桌面和下载文件夹几行 Python 代码让一切井井有条。一、为什么需要自动整理每个人大概都有过这样的经历下载文件夹里堆了 3000 个文件找东西靠肉眼翻桌面塞满截图、文档、安装包像一块数字垃圾场想批量把照片按IMG_001.jpg改成旅行_2026_001.jpg手动改到崩溃。手动整理费时费力还容易出错而 Python 脚本可以 10 秒搞定 10000 个文件。二、核心思路整个整理流程拆成 3 个独立模块像搭积木一样组合使用功能原理适用场景按类型分类​读取文件扩展名 → 匹配分类字典 → 移入对应子文件夹下载文件夹、桌面杂乱批量重命名​遍历文件 → 按模板生成新名字 → 原子重命名照片归档、项目文件规范化按日期归档​读取文件修改时间 → 创建年/月目录 → 移入照片库、日志文件、截图三、完整代码以下是可直接运行的完整脚本复制到本地.py文件即可使用 Python 自动整理文件工具 功能按文件类型自动分类 批量重命名 按日期归档 清理空文件夹 import os import shutil from datetime import datetime from pathlib import Path from collections import defaultdict # # 1. 文件分类规则可按需要扩展 # CATEGORY_MAP { 图片: [.jpg, .jpeg, .png, .gif, .bmp, .webp, .svg, .ico, .tiff, .psd], 文档: [.pdf, .doc, .docx, .xls, .xlsx, .ppt, .pptx, .txt, .md, .csv], 视频: [.mp4, .avi, .mov, .mkv, .flv, .wmv, .webm], 音频: [.mp3, .wav, .flac, .aac, .ogg, .m4a], 压缩包: [.zip, .rar, .7z, .tar, .gz], 安装包: [.exe, .msi, .dmg, .deb], 代码: [.py, .js, .ts, .java, .c, .cpp, .go, .rs, .html, .css, .json], 字体: [.ttf, .otf, .woff, .woff2], } def get_category(extension: str) - str: ext extension.lower() for category, extensions in CATEGORY_MAP.items(): if ext in extensions: return category return 其他 # # 2. 按文件类型自动分类 # def organize_by_type(folder_path: str, dry_run: bool False) - dict: folder Path(folder_path) if not folder.is_dir(): raise NotADirectoryError(f路径不存在或不是文件夹: {folder_path}) stats defaultdict(int) for item in folder.iterdir(): if item.is_dir() or item.name.startswith(.): continue category get_category(item.suffix) target_dir folder / category stats[category] 1 if dry_run: print(f [预览] {item.name} → {category}/) else: target_dir.mkdir(exist_okTrue) shutil.move(str(item), str(target_dir / item.name)) print(f ✅ {item.name} → {category}/) print(f\n 统计: {dict(stats)}) return dict(stats) # # 3. 批量重命名 # def batch_rename( folder_path: str, pattern: str file_{counter:03d}, prefix: str , add_date: bool False, dry_run: bool False, ): folder Path(folder_path) counter 1 for item in sorted(folder.iterdir()): if item.is_dir() or item.name.startswith(.): continue date_str datetime.now().strftime(%Y%m%d) if add_date else new_name pattern.format(countercounter, nameitem.stem, extitem.suffix) if prefix: new_name f{prefix}_{new_name} if date_str: new_name f{date_str}_{new_name} if not Path(new_name).suffix: new_name item.suffix if dry_run: print(f [预览] {item.name} → {new_name}) else: item.rename(folder / new_name) print(f ✅ {item.name} → {new_name}) counter 1 # # 4. 按日期归档适合照片/截图 # def organize_by_date(folder_path: str, dry_run: bool False): folder Path(folder_path) for item in folder.iterdir(): if item.is_dir() or item.name.startswith(.): continue mtime datetime.fromtimestamp(item.stat().st_mtime) year_dir folder / str(mtime.year) month_dir year_dir / f{mtime.month:02d} if not dry_run: month_dir.mkdir(parentsTrue, exist_okTrue) shutil.move(str(item), str(month_dir / item.name)) print(f {✅ if not dry_run else [预览]} {item.name} → {mtime.year}/{mtime.month:02d}/) # # 5. 清理空文件夹 # def remove_empty_folders(folder_path: str, dry_run: bool False): folder Path(folder_path) removed 0 for root, dirs, files in os.walk(folder, topdownFalse): for d in dirs: full Path(root) / d try: if not any(full.iterdir()): if not dry_run: full.rmdir() removed 1 print(f ️ {将删除 if dry_run else 已删除}: {full}) except (OSError, PermissionError): pass print(f\n共{将 if dry_run else }删除 {removed} 个空文件夹) # # 6. 一键整理入口 # def auto_organize(folder_path: str, dry_run: bool True): print(f\n{*50}\n 目标文件夹: {folder_path}\n{*50}\n) print( [Step 1] 按文件类型分类) organize_by_type(folder_path, dry_rundry_run) print(\n [Step 2] 清理空文件夹) remove_empty_folders(folder_path, dry_rundry_run) if dry_run: print(\n⚠️ 以上为预览模式未做实际修改。确认后设 dry_runFalse。) # # 使用示例 # if __name__ __main__: TARGET_FOLDER rD:\Downloads # ← 改成你的路径 auto_organize(TARGET_FOLDER, dry_runTrue) # 先预览 # auto_organize(TARGET_FOLDER, dry_runFalse) # 确认后执行四、使用指南Step 1修改目标路径# Windows TARGET_FOLDER rD:\Downloads # macOS TARGET_FOLDER /Users/yourname/Desktop # Linux TARGET_FOLDER /home/yourname/DocumentsWindows 路径前面加r避免反斜杠被当成转义符。Step 2先预览再执行脚本默认dry_runTrue只会打印将要做什么不会动你的文件[预览] photo1.jpg → 图片/ [预览] report.pdf → 文档/ [预览] movie.mp4 → 视频/确认无误后把dry_run改为False真正执行。Step 3单独调用某个功能# 只做批量重命名加前缀 日期 batch_rename(TARGET_FOLDER, patternphoto_{counter:03d}, prefix东京旅行, add_dateTrue) # 只按日期归档照片 organize_by_date(TARGET_FOLDER) # 只清理空文件夹 remove_empty_folders(TARGET_FOLDER)五、实用技巧 安全第一建议说明先 dry_run​永远先预览再执行确认分类规则符合预期备份重要文件​首次在重要文件夹上运行时先复制一份排除系统文件​脚本已自动跳过.开头的隐藏文件 自定义分类规则在CATEGORY_MAP字典里添加或修改即可CATEGORY_MAP { 电子书: [.epub, .mobi, .azw3, .pdf], 设计素材: [.psd, .ai, .sketch, .fig, .xd], 虚拟机: [.vmdk, .vdi, .qcow2, .ova], }⏰ 设置定时自动整理结合 Windows 任务计划程序 / macOScron/ Linuxcrontab每周自动跑一次# crontab 示例每周日凌晨 3 点自动整理下载文件夹 0 3 * * 0 /usr/bin/python3 /path/to/organize.py 进阶玩法按文件大小分类大文件单独归档到移动硬盘目录去重用hashlib计算 MD5自动删除重复文件智能识别结合python-magic库不依赖扩展名也能识别文件类型GUI 界面用tkinter或PyQt包一层图形界面给非技术同事用六、总结痛点Python 解法文件夹杂乱无章organize_by_type()按类型自动归位文件名乱七八糟batch_rename()统一命名规范照片越来越多organize_by_date()按年月归档空文件夹残留remove_empty_folders()一键清理核心就一句话用pathlib操作路径用shutil移动文件用字典做分类映射。

相关新闻

从东方甄选分流出三支力量:单人IP、大型平台、团队创业,谁能走到最后?

从东方甄选分流出三支力量:单人IP、大型平台、团队创业,谁能走到最后?

首播热度碾压董宇辉与东方甄选!孙东旭、明明、天权合体,直播电商格局迎来大变局。8月2日,“美丽明天”迎来万众瞩目的首场直播。孙东旭携手明明、天权三位东方甄选初代核心成员正式同台复出。开播不久直播间在线人数突破10万,迅速…

2026/8/4 18:30:20 阅读更多 →
Unity-基于JsonUtility的Json文件读写

Unity-基于JsonUtility的Json文件读写

前言在 Unity 开发中,配置存档、参数、UI 状态、参数保存,几乎都离不开 JSON 读写。Unity 自带 JsonUtility,原生、轻量、跨平台、打包无报错、零依赖。本篇给大家一套全网最简、可直接商用的 JSON 读写模板,包含:✅ 单…

2026/8/4 18:30:20 阅读更多 →
C++中static关键字的本质解析与应用实践

C++中static关键字的本质解析与应用实践

1. Static关键字的本质解析 在C编程中,static关键字可能是最容易被误解却又无处不在的核心概念之一。我第一次真正理解static是在调试一个多线程日志系统时——当时发现不同线程的计数器莫名其妙地互相干扰,直到导师指着那个缺失的static说:&…

2026/8/4 18:29:20 阅读更多 →

最新新闻

Simulink三相短路仿真与直流逆差分析指南

Simulink三相短路仿真与直流逆差分析指南

1. 电力系统三相短路仿真背景与价值 作为一名电力系统仿真工程师,我经常需要面对各种复杂的故障场景分析。三相短路作为电力系统中最严重的故障类型之一,其仿真分析对于系统保护设计、设备选型和运行策略制定都具有重要意义。 在实际工程中,…

2026/8/4 19:19:43 阅读更多 →
为什么92.6%的AI产品在GDPR第22条上栽跟头?——三重过滤漏斗设计+实时审计日志闭环(附可运行Python策略模板)

为什么92.6%的AI产品在GDPR第22条上栽跟头?——三重过滤漏斗设计+实时审计日志闭环(附可运行Python策略模板)

更多请点击: https://kaifayun.com 第一章:AI输出内容过滤 AI输出内容过滤是保障生成式人工智能系统安全、合规与可信的关键环节。它不仅涉及对有害、违法、歧视性或隐私敏感信息的实时拦截,还需兼顾语义准确性与用户体验的平衡。随着大模型…

2026/8/4 19:19:43 阅读更多 →
Unity移动端序列帧动画性能优化全攻略:从图集打包到运行时监控

Unity移动端序列帧动画性能优化全攻略:从图集打包到运行时监控

1. 项目概述:为什么序列帧动画依然是移动端开发的“硬骨头”?在Unity项目里,尤其是面向移动平台的项目,美术资源从一张张静态图片变成一个活灵活现的可动角色,序列帧动画(Sprite Animation)往往…

2026/8/4 19:19:43 阅读更多 →
字体组合不再靠感觉,AI驱动的6维可量化搭配模型,附开源评估工具包

字体组合不再靠感觉,AI驱动的6维可量化搭配模型,附开源评估工具包

更多请点击: https://intelliparadigm.com 第一章:字体组合不再靠感觉,AI驱动的6维可量化搭配模型,附开源评估工具包 传统字体搭配长期依赖设计师经验与主观判断,缺乏统一、可复现的评估标准。本章介绍一种基于机器学…

2026/8/4 19:19:43 阅读更多 →
SpringBoot+Vue构建社交平台的技术实践与优化

SpringBoot+Vue构建社交平台的技术实践与优化

1. 项目背景与核心价值这个基于SpringBoot的兴趣爱好者社交平台项目,是当前计算机专业毕业设计中非常典型的选题方向。我去年指导过三个类似课题的学生,发现这类项目能很好融合主流技术栈和实际应用场景。不同于简单的CRUD管理系统,社交平台类…

2026/8/4 19:19:43 阅读更多 →
朱雀 AIGC 检测原理是什么?能准确识别文章 AI 率和去 AI 痕迹效果吗?

朱雀 AIGC 检测原理是什么?能准确识别文章 AI 率和去 AI 痕迹效果吗?

朱雀 AIGC 检测原理是什么?能准确识别文章 AI 率和去 AI 痕迹效果吗? 你问这个问题,多半是因为心里有个更具体的疑问:我把 AI 写的东西改过一轮之后,它还认得出来吗? 这篇分两半回答。前一半讲原理&#…

2026/8/4 19:18:43 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/4 13:24:41 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/4 11:41:39 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/4 13:38:24 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/4 11:09:16 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/4 13:38:40 阅读更多 →