找回密码
 立即注册
搜索
热搜: STM32
查看: 57|回复: 0

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

[复制链接]

28

主题

0

回帖

102

积分

注册会员

积分
102
发表于 2026-3-22 17:13:03 |北京| 显示全部楼层 |阅读模式
【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都能用
- 自动创建分类文件夹
- 有错误处理,不会中断
- 可以配合定时任务每天自动运行

保存时间,告别手动整理!有问题欢迎交流!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Discuz! X

GMT+8, 2026-4-5 14:55 , Processed in 0.030051 second(s), 20 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表