Python自动化解压多种格式的压缩文件(支持.zip/.rar/.7z格式)

 更新时间:2025年06月30日 09:58:34   作者:岫珩  
这篇文章主要为大家详细介绍了如何使用Python实现自动化解压多种格式的压缩文件,包括.zip,.rar和.7z格式,感兴趣的小伙伴可以跟随小编一起学习一下

1. 使用场景

实现自动化解压多种格式的压缩文件,包括.zip、.rar和.7z格式。

2. 准备WinRAR压缩工具

从官网下载并安装WinRAR

记录WinRAR.exe文件路径(默认安装位置如下)

C:\Program Files\WinRAR\WinRAR.exe

安装示意图:

3.准备测试文件

1.将包含文件的本地文件夹分别压缩为三种格式:

  • TEST2ZIP.7z
  • TEST2ZIP.rar
  • TEST2ZIP.zip

2.创建目标文件夹TEST1RAR用于存放解压文件

4. 基础实现代码

示例代码如下

unpack_test.py

import subprocess
import os

def unpack(filepath, target_folder):
    # 获取文件目录和名称
    dir_folder = os.path.dirname(filepath)
    file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
    print("当前目录:", dir_folder)	
    print("文件名:", file_name_pre)
    
    # 配置WinRAR命令
    command = [
        'C:\\Program Files\\WinRAR\\WinRAR.exe',
        'x',                   # 解压保留目录结构
        os.path.abspath(filepath),
        target_folder.rstrip('\\') + '\\',
        '-o+',                 # 覆盖已有文件
        '-y'                   # 自动确认
    ]
    
    print("执行命令:", " ".join(command))
    result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    return target_folder

if __name__ == '__main__':
    # 测试配置(可切换不同格式)
    file_pack = r'D:\重载\TEST2ZIP.zip'
    # file_pack = r'D:\重载\TEST2ZIP.7z'
    # file_pack = r'D:\重载\TEST2ZIP.rar'
    target_folder = r'D:\重载\TEST1RAR'
    unpack(file_pack, target_folder)

5. 操作演示

1.在unpack_test.py目录打开CMD

2. 执行解压命令

py unpack_test.py

执行后输出如下

3. 检查解压结果

文件夹已存在,打开可查看打包前的文件夹内容

6.完整实现代码

示例代码如下

unpack_test.py

# 所需引入的库
import subprocess
import os

# 解压通用函数入口
def unpack(filepath, target_folder):
    # 获取文件所在目录
    dir_folder = os.path.dirname(filepath)
    print("dir_folder----> ",dir_folder)
    # # 获取文件名(包含后缀,如test1.rar、test2.zip、test3.7z)
    # file_name_all = os.path.basename(filepath)
    # print("file_name_all----> ",file_name_all)
    # # 将文件名和后缀分开,获取分割后的数组
    # file_name_all_list = os.path.splitext(file_name_all)
    # print("file_name_all_list----> ",file_name_all_list)
    # # 获取文件名(不包含后缀,如test1)
    # file_name_pre = file_name_all_list[0]

    # 以上注释代码的整合 目的为了获取压缩包文件名(不带后缀)
    file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
    print("file_name_pre----> ",file_name_pre)

    # 除了指定固定的输出目录,还可以使用文件名作为输出目录
    # 将rar文件所在目录和文件名(不包含后缀)拼接,成为文件夹的路径,用于解压后存储文件
    # target_folder = os.path.join(dir_folder, file_name_pre)
    # print("target_folder----> ",target_folder)
    # if not os.path.exists(target_folder):
        # os.makedirs(target_folder)

    # 本地winrar命令集成
    command = [
            # 本地WinRAR.exe文件路径
            'C:\\Program Files\\WinRAR\\WinRAR.exe',
            # 解压并保留完整目录结构
            'x',           
            # 传入源RAR文件的绝对路径(引号包裹,防止路径中有空格)
            os.path.abspath(filepath),
            # 目标目录(确保路径以一个反斜杠结束,否则WinRAR会出错),如果该参数省略,则会默认为当前目录
            target_folder.rstrip('\\') + '\\',
            # 覆盖已存在的文件
            '-o+',         
            # 将压缩包名称作为子目录添加到目标路径中,如果添加该参数,则压缩包名称会作为子目录添加到目标路径中,产生两层一样的目录
            # '-ad',
            # 后台运行
            # '-ibck',       
            # 自动确认所有提示
            '-y'           
        ]
    
    print("正在执行命令:", " ".join(command))

    # 运行命令 subprocess本身会处理空格问题
    result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    # 返回目标目录
    return target_folder

if __name__ == '__main__':
    # 测试rar解压
    # file_pack = r'D:\重载\TEST2ZIP.rar'
    # target_folder = r'D:\重载\TEST1RAR'

    # 测试7z解压
    # file_pack = r'D:\重载\TEST2ZIP.7z'
    # target_folder = r'D:\重载\TEST1RAR'

    # 测试zip解压
    file_pack = r'D:\重载\TEST2ZIP.zip'
    target_folder = r'D:\重载\TEST1RAR'

    unpack(file_pack, target_folder)

到此这篇关于Python自动化解压多种格式的压缩文件(支持.zip/.rar/.7z格式)的文章就介绍到这了,更多相关Python解压文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 对python 读取线的shp文件实例详解

    对python 读取线的shp文件实例详解

    今天小编就为大家分享一篇对python 读取线的shp文件实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Pycharm基本操作及调试代码

    Pycharm基本操作及调试代码

    最近天气狂热暴躁,很难静下心来学习啦,于是给大家整理一些python开发工具pycharm基本操作及调试代码吧,感兴趣的朋友跟随小编一起看看吧
    2021-06-06
  • python虚拟环境virtualenv的安装与使用

    python虚拟环境virtualenv的安装与使用

    virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件 2. 不同应用可以使用不同的套件版本 3. 套件升级不影响其他应用
    2017-09-09
  • Python 3.11.0下载安装并使用help查看模块信息的方法

    Python 3.11.0下载安装并使用help查看模块信息的方法

    本文给大家介绍Python 3.11.0下载安装并使用help查看模块信息的相关知识,首先给大家讲解了Python 3.11.0下载及安装紧接着介绍了在命令行使用help查看模块信息的方法,感兴趣的朋友跟随小编一起看看吧
    2022-11-11
  • Django项目配置连接多个数据库的方法记录

    Django项目配置连接多个数据库的方法记录

    最近在进行django项目开发的时候,遇到了需要连接两个MySQL数据库的问题,下面这篇文章主要给大家介绍了关于Django项目配置连接多个数据库的相关资料,需要的朋友可以参考下
    2022-05-05
  • python爬取盘搜的有效链接实现代码

    python爬取盘搜的有效链接实现代码

    这篇文章主要介绍了python爬取盘搜的有效链接,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • 在Python的while循环中使用else以及循环嵌套的用法

    在Python的while循环中使用else以及循环嵌套的用法

    这篇文章主要介绍了在Python的while循环中使用else以及循环嵌套的用法,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10
  • Python模块常用四种安装方式

    Python模块常用四种安装方式

    这篇文章主要介绍了Python模块常用四种安装方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python 一键获取百度网盘提取码的方法

    Python 一键获取百度网盘提取码的方法

    这篇文章主要介绍了Python 一键获取百度网盘提取码的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Jupyter Notebook打开任意文件夹操作

    Jupyter Notebook打开任意文件夹操作

    这篇文章主要介绍了Jupyter Notebook打开任意文件夹操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论