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

作者:

文章目录
  • 实现自动化解压多种格式的压缩文件,包括.zip、.rar和.7z格式。
  • 从官网下载并安装WinRAR 记录WinRAR.exe文件路径(默认安装位置如下) C:Program FilesWinRARWinRAR.exe 安装示意图:
  • 1.将包含文件的本地文件夹分别压缩为三种格式: TEST2ZIP.7z TEST2ZIP.rar TEST2ZIP.zip 2.创建目标文件夹TEST1RAR用于存放解压文件
  • 示例代码如下 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)
  • 1.在unpack_test.py目录打开CMD 2. 执行解压命令 py unpack_test.py 执行后输出如下 3. 检查解压结果 文件夹已存在,打开可查看打包前的文件夹内容
  • 示例代码如下 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实现批量解压文件夹下所有压缩包 Python实现解压当天创建的ZIP文件到指定文件夹中 Python实现批量压缩解压文件(zip、rar) 基于Python自制一个文件解压缩小工具 Python文件的压缩与解压 基于Python实现文件的压缩与解压缩
  • 目录
    • 1. 使用场景
    • 2. 准备WinRAR压缩工具
    • 3.准备测试文件
    • 4. 基础实现代码
    • 5. 操作演示
    • 6.完整实现代码

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

    从官网下载并安装WinRAR

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

    C:Program FilesWinRARWinRAR.exe

    安装示意图:

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

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

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

    示例代码如下

    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)
    
    

    1.在unpack_test.py目录打开CMD

    2. 执行解压命令

    py unpack_test.py
    

    执行后输出如下

    3. 检查解压结果

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

    示例代码如下

    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实现批量解压文件夹下所有压缩包
    • Python实现解压当天创建的ZIP文件到指定文件夹中
    • Python实现批量压缩解压文件(zip、rar)
    • 基于Python自制一个文件解压缩小工具
    • Python文件的压缩与解压
    • 基于Python实现文件的压缩与解压缩

    站内搜索