编辑代码

import os
import shutil
from tkinter import Tk, Label, Entry, Button, filedialog, messagebox

# 定义文件类型和目标文件夹
file_types = {
    '图片': ['.jpg', '.jpeg', '.png', '.gif', '.bmp'],
    '文档': ['.pdf', '.doc', '.docx', '.txt', '.xls', '.xlsx'],
    '视频': ['.mp4', '.avi', '.mov', '.mkv'],
    '音频': ['.mp3', '.wav', '.aac'],
    '压缩包': ['.zip', '.rar', '.7z']
}

def create_folders(base_path):
    for folder in file_types.keys():
        folder_path = os.path.join(base_path, folder)
        if not os.path.exists(folder_path):
            os.makedirs(folder_path)

def move_files(base_path):
    for root, dirs, files in os.walk(base_path):
        for file in files:
            file_ext = os.path.splitext(file)[1].lower()
            moved = False
            for folder, extensions in file_types.items():
                if file_ext in extensions:
                    src_path = os.path.join(root, file)
                    dest_path = os.path.join(base_path, folder, file)
                    shutil.move(src_path, dest_path)
                    moved = True
                    break
            if not moved:
                print(f"未识别的文件类型: {file}")

def select_directory():
    directory = filedialog.askdirectory()
    entry.delete(0, 'end')
    entry.insert(0, directory)

def start_organizing():
    base_path = entry.get()
    if not os.path.isdir(base_path):
        messagebox.showerror("错误", "无效的目录路径")
        return
    
    create_folders(base_path)
    move_files(base_path)
    messagebox.showinfo("完成", "文件整理完成!")

# 创建主窗口
root = Tk()
root.title("文件整理工具")

# 添加标签、输入框和按钮
label = Label(root, text="请选择要整理的目录路径:")
label.pack(pady=5)

entry = Entry(root, width=50)
entry.pack(pady=5)

select_button = Button(root, text="浏览", command=select_directory)
select_button.pack(pady=5)

start_button = Button(root, text="开始整理", command=start_organizing)
start_button.pack(pady=5)

# 运行主循环
root.mainloop()