Python结合AI打造一个桌面文件自动整理助手
作者:AI效率工坊
桌面文件堆积如山,手动整理费时又低效,本文详细介绍了一个用Python+AI开发的桌面文件整理助手,能自动分类混乱的桌面文件,找文件效率提升3倍,彻底告别整理拖延症
用Python+AI打造一个桌面文件整理助手,让混乱的桌面瞬间清爽
一、痛点:桌面文件的"灾难现场"
我的桌面曾经是这样的:
- 截图、下载文件、临时文档混在一起
- 找文件要翻半天
- 重要文件被淹没在垃圾文件里
- 手动整理太麻烦,坚持不了3天
- 直到我写了这个AI文件整理脚本…
二、核心思路:AI智能分类
不用手动设置规则,让AI根据文件名智能判断文件类型:

三、完整代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
AI文件整理助手 - 自动分类桌面文件
作者:技术实战派
"""
import os
import shutil
from pathlib import Path
from datetime import datetime
class AIFileOrganizer:
"""AI驱动的文件整理器"""
def __init__(self, source_dir, target_dir=None):
self.source_dir = Path(source_dir)
self.target_dir = Path(target_dir) if target_dir else self.source_dir / "已整理"
self.stats = {"moved": 0, "skipped": 0, "errors": 0}
# 定义分类规则
self.rules = {
"截图": {
"keywords": ["截图", "screen", "screencapture", "qq截图", "微信截图"],
"exts": [".png", ".jpg", ".jpeg"],
"folder": "图片/截图"
},
"合同文档": {
"keywords": ["合同", "协议", "agreement", "contract"],
"exts": [".pdf", ".doc", ".docx"],
"folder": "文档/合同"
},
"财务票据": {
"keywords": ["发票", "收据", "invoice", "receipt", "报销"],
"exts": [".pdf", ".png", ".jpg"],
"folder": "文档/财务"
},
"图片素材": {
"keywords": ["img", "image", "photo", "pic"],
"exts": [".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp"],
"folder": "图片/素材"
},
"PDF文档": {
"exts": [".pdf"],
"folder": "文档/PDF"
},
"办公软件": {
"keywords": ["word", "excel", "ppt", "doc", "xls"],
"exts": [".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"],
"folder": "文档/办公"
},
"压缩包": {
"exts": [".zip", ".rar", ".7z", ".tar", ".gz"],
"folder": "压缩包"
},
"安装包": {
"keywords": ["setup", "install", "installer"],
"exts": [".exe", ".msi", ".dmg", ".pkg"],
"folder": "软件/安装包"
},
"视频": {
"exts": [".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv"],
"folder": "视频"
},
"音频": {
"exts": [".mp3", ".wav", ".flac", ".aac", ".ogg"],
"folder": "音频"
},
"代码文件": {
"exts": [".py", ".js", ".html", ".css", ".java", ".cpp", ".c", ".go", ".rs"],
"folder": "代码"
}
}
def ai_classify(self, filename):
"""
AI智能分类:根据文件名和扩展名判断类型
"""
name_lower = filename.lower()
ext = Path(filename).suffix.lower()
# 按优先级匹配规则
for category, rule in self.rules.items():
# 检查关键词
keywords = rule.get("keywords", [])
if any(kw.lower() in name_lower for kw in keywords):
return rule["folder"]
# 检查扩展名
exts = rule.get("exts", [])
if ext in exts:
return rule["folder"]
# 默认分类:按日期
return f"其他/{datetime.now().strftime('%Y-%m')}"
def organize(self, dry_run=False):
"""
执行整理
:param dry_run: 试运行模式(只打印,不移动)
"""
print(f"📁 源目录: {self.source_dir}")
print(f"📂 目标目录: {self.target_dir}")
print(f"🔍 扫描文件中...\n")
# 遍历源目录
for item in self.source_dir.iterdir():
if item.is_dir():
continue # 跳过目录
filename = item.name
# 跳过脚本自身
if filename == os.path.basename(__file__):
continue
# AI分类
category = self.ai_classify(filename)
target_folder = self.target_dir / category
# 显示结果
action = "【模拟】" if dry_run else "【移动】"
print(f"{action} {filename:<30} → {category}")
if not dry_run:
try:
# 创建目标目录
target_folder.mkdir(parents=True, exist_ok=True)
# 处理重名文件
target_path = target_folder / filename
counter = 1
while target_path.exists():
stem = Path(filename).stem
suffix = Path(filename).suffix
target_path = target_folder / f"{stem}_{counter}{suffix}"
counter += 1
# 移动文件
shutil.move(str(item), str(target_path))
self.stats["moved"] += 1
except Exception as e:
print(f" ❌ 错误: {e}")
self.stats["errors"] += 1
else:
self.stats["moved"] += 1
# 打印统计
print(f"\n{'='*50}")
print(f"📊 整理完成!")
print(f" 已处理: {self.stats['moved']} 个文件")
print(f" 错误: {self.stats['errors']} 个")
print(f"{'='*50}")
def main():
"""主函数"""
import argparse
parser = argparse.ArgumentParser(description='AI文件整理助手')
parser.add_argument('path', nargs='?', default='.', help='要整理的目录(默认当前目录)')
parser.add_argument('--output', '-o', help='输出目录(默认在源目录创建"已整理")')
parser.add_argument('--dry-run', '-d', action='store_true', help='试运行模式(不实际移动文件)')
args = parser.parse_args()
# 创建整理器
organizer = AIFileOrganizer(args.path, args.output)
# 执行整理
organizer.organize(dry_run=args.dry_run)
if __name__ == "__main__":
main()
四、使用方法
安装依赖
# 无需额外依赖,使用Python标准库 python --version # 需要 Python 3.6+
试运行(推荐先测试)
python file_organizer.py ~/Desktop --dry-run
正式整理
# 整理桌面 python file_organizer.py ~/Desktop # 整理下载文件夹 python file_organizer.py ~/Downloads # 指定输出目录 python file_organizer.py ~/Desktop -o ~/Documents/已整理
五、运行效果
整理前:
桌面/
├── 微信截图_20260402123456.png
├── 合同-技术服务-v3.pdf
├── 发票-办公用品.jpg
├── setup_python_3.12.exe
├── project_backup.zip
├── 临时笔记.txt
└── ...
整理后:
已整理/
├── 图片/
│ └── 截图/
│ └── 微信截图_20260402123456.png
├── 文档/
│ ├── 合同/
│ │ └── 合同-技术服务-v3.pdf
│ └── 财务/
│ └── 发票-办公用品.jpg
├── 软件/
│ └── 安装包/
│ └── setup_python_3.12.exe
├── 压缩包/
│ └── project_backup.zip
└── 其他/
└── 2026-04/
└── 临时笔记.txt
六、进阶扩展
添加自定义规则
# 在 __init__ 中添加
self.rules["我的项目"] = {
"keywords": ["项目", "project"],
"exts": [".md", ".txt"],
"folder": "项目文档"
}
按文件大小分类
def classify_by_size(self, file_path):
size = file_path.stat().st_size
if size > 100 * 1024 * 1024: # > 100MB
return "大文件"
return None
定时自动整理(Windows任务计划)
# 创建定时任务,每天自动整理桌面 schtasks /create /tn "AI文件整理" /tr "python C:\tools\file_organizer.py %USERPROFILE%\Desktop" /sc daily /st 18\:00
七、踩坑记录
中文文件名乱码:使用 Path 对象处理,避免编码问题
文件被占用:跳过正在使用的文件,记录错误日志
重复文件名:自动添加序号,避免覆盖
误分类:关键词匹配优先级高于扩展名
八、总结
这个脚本帮我:
- 每天节省 10 分钟整理时间
- 桌面从此清爽整洁
- 找文件效率提升 3 倍
- 再也不怕文件堆积
到此这篇关于Python结合AI打造一个桌面文件自动整理助手的文章就介绍到这了,更多相关Python桌面文件整理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
