MJ批量解压程序

复制代码
import os
import zipfile
import re
import shutil

def extract_zip_in_folder(folder_path):
    # 检查路径是否存在
    if not os.path.exists(folder_path):
        print("路径不存在,请重新输入")
        return

    # 存储已处理过的压缩包名称(无后缀编码)和带后缀编码的文件夹路径
    processed_names = {}
    folders_with_suffix = []

    # 遍历目录下的所有文件
    for item in os.listdir(folder_path):
        # 构建完整的文件路径
        file_path = os.path.join(folder_path, item)

        # 检查是否为zip文件
        if zipfile.is_zipfile(file_path):
            # 移除文件名中的后缀编码和括号
            name_without_suffix = re.sub(r'(\s*[\(\(][^)]*[\)\)])', '', item)
            name_without_suffix = os.path.splitext(name_without_suffix)[0]

            # 创建对应的文件夹(如果尚未创建)
            extract_folder = os.path.join(folder_path, name_without_suffix)
            if name_without_suffix not in processed_names:
                os.makedirs(extract_folder, exist_ok=True)
                processed_names[name_without_suffix] = extract_folder

            # 解压zip文件到对应文件夹
            with zipfile.ZipFile(file_path, 'r') as zip_ref:
                zip_ref.extractall(processed_names[name_without_suffix])
                print(f"已解压: {item} 到 {name_without_suffix}")

            # 如果原始文件名包含后缀编码,记录其文件夹路径
            if re.search(r'[\(\(][^)]*[\)\)]', item):
                folders_with_suffix.append(os.path.splitext(file_path)[0])

    # 删除所有带后缀编码的文件夹
    for folder in folders_with_suffix:
        if os.path.exists(folder):
            shutil.rmtree(folder)
            print(f"已删除文件夹: {folder}")

# 用户输入路径
user_input = input("请输入目录路径: ")
extract_zip_in_folder(user_input)
复制代码

 

posted @   不上火星不改名  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示