如何用Python批量解压ZIP文件?快速解决方案

如何用Python批量解压ZIP文件?快速解决方案

文章目录

话不多说,先上干货!!!

代码

python 复制代码
import os
import zipfile


def unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None):
    """
    解压指定的 ZIP 文件到目标目录。

    @param dir_path: 包含 ZIP 文件的源目录路径
    @param zip_name: ZIP 文件的名称(不带 .zip 扩展名)
    @param extract_dir: 解压后的文件存放目录
    @param password: ZIP 文件的密码(可选)
    @return: 无返回值
    """
    # 构造完整的 ZIP 文件路径
    zip_filepath = os.path.join(dir_path, zip_name + '.zip')
    # 构造解压目标路径
    extract_path = os.path.join(extract_dir, zip_name)

    # 创建解压目标目录,如果不存在
    if not os.path.exists(extract_path):
        os.makedirs(extract_path)

    try:
        # 打开 ZIP 文件
        with zipfile.ZipFile(zip_filepath, 'r') as extracting:
            # 如果设置了密码,尝试解压
            if password:
                extracting.setpassword(password.encode('utf-8'))
            # 解压所有文件到目标目录
            extracting.extractall(extract_path)
        print(f"成功解压:{zip_name}")
    except Exception as e:
        print(f"解压失败:{zip_name}, 错误:{str(e)}")


if __name__ == '__main__':
    # 设置源目录和目标目录路径
    dir_path = r'D:\桌面\baby'  # 源目录
    extract_dir = r'D:\桌面\ye'  # 目标目录

    # 获取 ZIP 文件列表
    for filename in os.listdir(dir_path):
        # 检查是否是 ZIP 文件
        if filename.endswith('.zip'):
            # 提取 ZIP 文件名(不带 .zip)
            zip_name = filename[:-4]
            try:
                # 解压 ZIP 文件,传递密码(如无需密码,可省略或设置为 None)
                unzip_file(dir_path, zip_name, extract_dir, password=None)
            except Exception as e:
                print(f"解压失败:{zip_name}, 错误:{str(e)}")
    print(f"所有 ZIP 文件已解压到:{extract_dir}")

结果

详细解释

  1. 导入必要的模块

    py 复制代码
    import os
    import zipfile
    • os:用于处理文件路径、目录创建等操作
    • zipfile:用于处理zip文件的解压
  2. unzip_file函数

    py 复制代码
    def unzip_file(dir_path: str, zip_name: str, extract_dir: str, password: str = None):
        """
        解压指定的 ZIP 文件到目标目录。
        
        @param dir_path: 包含 ZIP 文件的源目录路径
        @param zip_name: ZIP 文件的名称(不带 .zip 扩展名)
        @param extract_dir: 解压后的文件存放目录
        @param password: ZIP 文件的密码(可选)
        @return: 无返回值
        """
        # 构造完整的 ZIP 文件路径
        zip_filepath = os.path.join(dir_path, zip_name + '.zip')
        # 构造解压目标路径
        extract_path = os.path.join(extract_dir, zip_name)
        
        # 创建解压目标目录,如果不存在
        if not os.path.exists(extract_path):
            os.makedirs(extract_path)
        
        try:
            # 打开 ZIP 文件
            with zipfile.ZipFile(zip_filepath, 'r') as extracting:
                # 如果设置了密码,尝试解压
                if password:
                    extracting.setpassword(password.encode('utf-8'))
                # 解压所有文件到目标目录
                extracting.extractall(extract_path)
            print(f"成功解压:{zip_name}")
        except Exception as e:
            print(f"解压失败:{zip_name}, 错误:{str(e)}")
    • 功能:解压指定的ZIP文件到目标目录。

    • 步骤:①构造完整的ZIP文件路径和解压目标路径

      ​ ②创建解压目标目录,如果不存在则创建

      ​ ③打开ZIP文件,尝试解压到目标目录

      ​ ④处理异常,输出成功或失败信息

  3. 主程序部分

    py 复制代码
    if __name__ == '__main__':
        # 设置源目录和目标目录路径
        dir_path = r'D:\桌面\baby'  # 源目录
        extract_dir = r'D:\桌面\ye'  # 目标目录
        
        # 获取 ZIP 文件列表
        for filename in os.listdir(dir_path):
            # 检查是否是 ZIP 文件
            if filename.endswith('.zip'):
                # 提取 ZIP 文件名(不带 .zip)
                zip_name = filename[:-4]
                try:
                    # 解压 ZIP 文件,传递密码(如无需密码,可省略或设置为 None)
                    unzip_file(dir_path, zip_name, extract_dir, password=None)
                except Exception as e:
                    print(f"解压失败:{zip_name}, 错误:{str(e)}")
        print(f"所有 ZIP 文件已解压到:{extract_dir}")
    • 功能:遍历源目录,解压所有ZIP文件到目标目录。

    • 步骤:①设置源目录dir_path和目标目录extract_dir

      ​ ②遍历源目录中的所有文件,筛选出ZIP文件

      ​ ③对于每个ZIP文件,调用unzip_file函数进行解压

      ​ ④处理异常,输出解压结果

看到这里就结束了,你学会了吗???

相关推荐
张槊哲4 小时前
ROS2架构介绍
python·架构
风逸hhh5 小时前
python打卡day29@浙大疏锦行
开发语言·前端·python
浩皓素5 小时前
深入理解For循环及相关关键字原理:以Python和C语言为例
c语言·python
英英_5 小时前
详细介绍一下Python连接MySQL数据库的完整步骤
数据库·python·mysql
水花花花花花5 小时前
GloVe 模型讲解与实战
python·深度学习·conda·pip
C_VuI5 小时前
如何安装cuda版本的pytorch
人工智能·pytorch·python
Star abuse5 小时前
机器学习基础课程-6-课程实验
人工智能·python·机器学习
不二一6 小时前
linux c++头文件生成源文件 使用python脚本 配置vim快捷键
linux·c++·python
RongSen336 小时前
Python海龟绘图(Turtle Graphics)核心函数和关键要点
开发语言·python