QZQ的小世界!

  • 首页
你好!
这里是QZQ的博客站!
  1. 首页
  2. 未分类
  3. 正文

使用Python解压rar压缩文件,两种思路

2025年4月4日 48点热度 0人点赞 0条评论

2024-10-27

前言

god,python现在还不支持原生压缩rar文件…为何。

依靠Python第三方库

rarfile 库专门用于处理rar型压缩包,这个库需要系统上安装 unrar 程序,在环境变量中能需要能找到它。

安装依赖包

  1. 安装 rarfile:
pip install rarfile
# conda install rarfile

以下是GTP-4给出的回答

确保系统已安装 unrar 或 rar(具体根据你的系统环境),这是rarfile这个库的依赖,没有配置好运行该库将报错:

  • Windows:下载并安装 WinRAR 后,将其路径添加到系统环境变量。

  • Linux:使用包管理器安装:

sudo apt-get install unrar
  • macOS:可以通过 brew 安装:
brew install unrar

笔者是直接使用python包管理器安装,也就是使用conda直接安装unrar,实测win11与macos 15都没问题,依赖都能搞定。

conda install unrar

据网友所说直接install rar可能出现报错,这里贴一下原帖地址以及解决方法,笔者撰写此文的时候并没有遇到。

https://zhuanlan.zhihu.com/p/611812344

第一步:

安装unrar模块,直接pip install unrar可能会找不到库,需要下载unrar library,也就是UnRAR.dll,下载地址为:http://www.rarlab.com/rar/UnRARDLL.exe ;

第二步:

将unrar安装路径添加到系统环境变量,64位操作系统的路径为C:\Program Files (x86)\UnrarDLL\x64,然后还需要将x64文件下的UnRAR64.lib和UnRAR64.dall重命名为unrar.lib和unrar.dall,因为unrar模块识别的文件是unrar.dll和unrar.lib;

示例代码

import rarfile
import os

def extract_rar_with_password(rar_file, output_dir, password):
    try:
        # 打开 RAR 文件
        with rarfile.RarFile(rar_file) as rf:
            # 确保输出目录存在
            if not os.path.exists(output_dir):
                os.makedirs(output_dir)

            # 解压所有文件,使用密码
            rf.extractall(path=output_dir, pwd=password)
            print(f"成功解压到: {output_dir}")

    except rarfile.BadRarFile:
        print("错误:文件格式不正确或文件损坏。")
    except rarfile.PasswordRequired:
        print("错误:需要提供密码。")
    except rarfile.RarWrongPassword:
        print("错误:提供的密码不正确。")
    except Exception as e:
        print(f"发生错误:{e}")

# 示例调用
rar_file = "your_file.rar"  # 替换为你的 RAR 文件路径
output_dir = "output_directory"  # 替换为解压后的输出目录路径
password = "your_password"  # 替换为正确的密码

extract_rar_with_password(rar_file, output_dir, password)

以上代码为ai生成,win11和macos均可以跑。但是测试过程中也发生了些问题,比如输入错误密码其实会报rarfile.BadRarFile的错误;在macos上如果提供不存在的输出目录,解压程序还是会运行到底而且不会报错,然后系统磁盘大小是没有变化的。这些错误感觉十分奇葩,估计是rarfile年久失修的问题。

使用python间接输入命令行

使用os.system函数可以直接执行系统的命令行。如果是windows系统,winrar软件在安装的时候,还会直接提供一个winrar.exe的可执行函数,我们可以使用命令行来直接调用它,如下所示:

import os

winrar_path = r'C:\"Program Files"\WinRAR\WinRAR.exe'  # 一般是这个路径
psw = ''
rar_file_path = 'test.rar'  # 需要解压的rar文件路径
os.system(f'{winrar_path} -y x -p{psw} "{rar_file_path}" *')

到这步其实和python没啥关系了,winrar的其他命令行操作,其官方文档也有介绍,这里就不展开。

[文章导入自 http://qzq-go.notion.site/12c49a7b4e758095a152f07d06cd67cc 访问原文获取高清图片]

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: IT技术 Python Python实战
最后更新:2025年4月3日

QZQ

一只涉猎广泛的技术爱好者,绝赞养猫中~

点赞
< 上一篇
下一篇 >

归档

  • 2025 年 4 月
  • 2025 年 3 月
  • 2025 年 2 月
  • 2025 年 1 月
  • 2024 年 12 月
  • 2024 年 11 月

分类

  • 技术
  • 未分类

COPYRIGHT © 2024 QZQ的小世界!. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang