7n25gSnP 发表于 2026-3-22 17:13:03

Python自动整理下载文件夹 - 10行代码搞定杂乱文件

【Python实用脚本】自动整理下载文件夹,告别杂乱!

痛点:下载文件夹里什么文件都有,图片、文档、视频混在一起,找个文件要翻半天。

解决方案:Python脚本自动按文件类型分类整理!

完整代码:

import os
import shutil
from pathlib import Path

def organize_folder(folder_path):
    categories = {
      '图片': ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.svg', '.webp'],
      '文档': ['.pdf', '.doc', '.docx', '.txt', '.md', '.csv', '.xlsx', '.pptx'],
      '视频': ['.mp4', '.avi', '.mkv', '.mov', '.wmv', '.flv'],
      '音乐': ['.mp3', '.wav', '.flac', '.aac', '.ogg'],
      '压缩包': ['.zip', '.rar', '.7z', '.tar', '.gz'],
      '代码': ['.py', '.js', '.html', '.css', '.java', '.cpp', '.c', '.go'],
      '安装包': ['.exe', '.msi', '.deb', '.rpm', '.dmg', '.apk'],
    }

    count = 0
    for filename in os.listdir(folder_path):
      filepath = os.path.join(folder_path, filename)
      if not os.path.isfile(filepath):
            continue

      ext = Path(filename).suffix.lower()
      target = '其他'
      for category, exts in categories.items():
            if ext in exts:
                target = category
                break

      dest = os.path.join(folder_path, target)
      os.makedirs(dest, exist_ok=True)

      try:
            shutil.move(filepath, os.path.join(dest, filename))
            print(f'移动: {filename} -> {target}/')
            count += 1
      except Exception as e:
            print(f'错误: {filename} - {e}')

    print(f'\n整理完成!共移动 {count} 个文件。')

if __name__ == '__main__':
    path = input('请输入要整理的文件夹路径: ').strip()
    if os.path.isdir(path):
      organize_folder(path)
    else:
      print('路径无效!')

使用方法:
1. 复制代码保存为 file_organizer.py
2. 运行: python3 file_organizer.py
3. 输入文件夹路径(如 /home/user/Downloads)
4. 自动分类完成!

整理效果:
整理前: Downloads/ (100多个文件混在一起)
整理后: Downloads/
      ├── 图片/    (45个文件)
      ├── 文档/    (23个文件)
      ├── 视频/    (12个文件)
      ├── 音乐/    (8个文件)
      ├── 压缩包/(6个文件)
      ├── 代码/    (4个文件)
      └── 其他/    (2个文件)

进阶玩法 - 设置定时自动整理:

import schedule
import time

def job():
    organize_folder('/home/user/Downloads')
    print('每日整理任务完成!')

schedule.every().day.at('00:00').do(job)

while True:
    schedule.run_pending()
    time.sleep(60)

进阶玩法 - 防止重复整理:
只整理超过7天未修改的文件,避免整理正在下载的文件:

import time

def is_old_file(filepath, days=7):
    file_time = os.path.getmtime(filepath)
    return (time.time() - file_time) > days * 86400

然后在主循环中加入判断:
if not is_old_file(filepath):
    continue

亮点:
- 纯Python,不需要安装第三方库
- 跨平台,Windows/Mac/Linux都能用
- 自动创建分类文件夹
- 有错误处理,不会中断
- 可以配合定时任务每天自动运行

保存时间,告别手动整理!有问题欢迎交流!
页: [1]
查看完整版本: Python自动整理下载文件夹 - 10行代码搞定杂乱文件