Python批量解压压缩包

Python批量解压压缩包

import os
import zipfile
import shutil

def unzip_all_files(folder_path, output_folder, passwords=None):
    # 检查输出文件夹是否存在,如果不存在则创建
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    # 遍历文件夹中的所有文件
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        # 检查是否为压缩文件
        if zipfile.is_zipfile(file_path):
            # 打开压缩文件
            with zipfile.ZipFile(file_path, 'r') as zip_ref:
                # 尝试每个密码进行解压
                for password in passwords:
                    try:
                        # 创建临时文件夹
                        tmp_folder = os.path.join(output_folder, 'tmp')
                        if not os.path.exists(tmp_folder):
                            os.makedirs(tmp_folder)
                        # 解压文件到临时文件夹
                        zip_ref.extractall(tmp_folder, pwd=password.encode())

                        # 遍历解压后的临时文件夹
                        for root, _, files in os.walk(tmp_folder):
                            for file in files:
                                src_file = os.path.join(root, file)
                                # 获取文件后缀
                                _, ext = os.path.splitext(file)
                                ext_folder = os.path.join(output_folder, ext[1:])  # 创建后缀文件夹
                                if not os.path.exists(ext_folder):
                                    os.makedirs(ext_folder)
                                dst_file = os.path.join(ext_folder, file)
                                # 移动文件到后缀文件夹
                                shutil.move(src_file, dst_file)

                        # 删除临时文件夹
                        shutil.rmtree(tmp_folder)

                        print(f"解压文件 '{filename}' 到 '{output_folder}' 完成。")
                        break  # 如果成功解压则退出循环
                    except RuntimeError as e:
                        print(f"尝试使用密码 '{password}' 解压文件 '{filename}' 失败:{e}")

# 指定文件夹路径和输出文件夹路径
folder_path = 'your_folder_path'
output_folder = 'output_folder_path'

# 定义密码列表
passwords = ['password1', 'password2', 'password3']  # 用实际密码替换

# 调用函数解压所有文件
unzip_all_files(folder_path, output_folder, passwords)

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容