Python 自动化:10 行代码自动整理电脑文件,告别桌面混乱

引言

你是不是也有这样的困扰:

  • 桌面堆满了下载的文件,找什么都要翻半天
  • 下载文件夹里全是乱七八糟的 APK、ZIP、EXE
  • 每次需要某个文件,都要在几百个文件里大海捞针

我之前的下载文件夹有 847 个文件,最老的还是 2019 年的。直到我写了这个脚本,彻底解决了这个问题。

今天教你用 Python 写一个自动文件整理脚本,代码不到 50 行,以后再也不用手动整理!

一、原理分析

1.1 核心思路

文件整理的本质就是分类 + 移动

  1. 遍历目标目录下的所有文件
  2. 根据文件后缀名判断类型
  3. 创建对应的分类文件夹
  4. 将文件移动到对应文件夹

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 行,但能解决实际问题。

关键不是代码有多复杂,而是能帮你节省时间。

如果你有更多想法,欢迎在评论区交流!

上一篇 CloudFlare 安全配置:WAF 与防火墙规则