python利用unrar实现rar文件解压缩

liftword2个月前 (03-03)技术文章15

python第三方包unrar可以实现rar文件的解压缩,它以动态库UnRAR为基础,封装而成

1. 下载UnRAR动态库

windows下可以下载编译好的库包:

下载解压后能得到一个DLL: UnRAR.dll

2. 安装python包unrar

pip install unrar

windows下先进入python安装目录下的Scripts: 例如“D:\Python27\Scripts”

然后同样执行: pip install unrar

3. 开始使用unrar

我们在命令行中直接演示使用方法:

将1中解压得到的UnRAR.dll放到当前目录下,否则会找不到DLL的路径

在unrarlib.py("python安装目录\Python27\Lib\site-packages\unrar")中有实现:

if platform.system == 'Windows':
    from ctypes.wintypes import HANDLE as WIN_HANDLE
    HANDLE = WIN_HANDLE
    UNRARCALLBACK = ctypes.WINFUNCTYPE(ctypes.c_int, ctypes.c_uint,
 ctypes.c_long, ctypes.c_long,
 ctypes.c_long)
    lib_path = lib_path or find_library("unrar.dll")
    if lib_path is None:
        #lib_path = 'E:\\code\\python\\unrar\\Python27\\Lib\\site-packages\\unrar\\UnRAR.dll'
        lib_path = 'UnRAR.dll'
    if lib_path:
        unrarlib = ctypes.WinDLL(lib_path)
>>> from unrar import rarfile
>>> rar = rarfile.RarFile('sample.rar')
>>> rar.namelist
[u'test_file.txt']
>>> rar.printdir
File Name Modified Size
test_file.txt 2013-04-14 08:20:28 17
>>> rar.testrar
>>> info = rar.infolist[0]
>>> info.filename
u'test_file.txt'
>>> info.file_size
17L
>>> info.date_time
(2013L, 4L, 14L, 8L, 20L, 28L)
>>> rar.extractall

相关文章

最全RAR文件操作指南:如何用Python压缩、解压与筛选文件

引言:Python 对 .rar 文件进行压缩、解压以及筛选特定文件的操作代码封装一下import os import rarfile #todo 用于处理 RAR 文件 import zipfil...

20 天学 Python 文件操作:Day 16 文件压缩与解压

在日常工作中,我们经常需要对文件进行压缩和解压操作以减少存储空间或方便文件传输。今天,我们将学习如何使用 Python 进行文件的压缩与解压。1. 使用 zipfile 模块进行 ZIP 文件操作创建...

Python全能压缩:ZIP的压缩、解压、文件筛选与删除,一键搞定!

引言:这个方法实现了文件压缩与解压的常见操作,涵盖内容如下:1、从文件夹创建 ZIP 文件 2、从文件夹创建 ZIP 文件(筛选特定文件) 3、解压 ZIP 文件中的所有内容 4、解压 ZIP...

使用 Python 压缩 PDF 或减小 PDF 文件大小的 5 种方法

在存储、共享和传输方面,处理大型 PDF 文件可能是一个真正的挑战。PDF 压缩提供了一种有效的解决方案来减小文件大小,使文档更易于管理并优化存储使用情况。压缩的 PDF 文件具有几个关键优势:降低存...

python散装笔记——131: 解压文件

为了提取或解压缩tarball(tar归档文件)、ZIP文件或gzip文件,Python分别提供了tarfile、zipfile和gzip模块。Python的tarfile模块提供了TarFile.e...

15《Python 办公自动化教程》文件压缩与解压缩

压缩包也是我们平时工作中经常要接触到的文件格式,压缩文件后缀名通常有 .zip、.rar、.7z 等等。Python 中也有专门用来操作压缩包文件的第三方模块 zipfile。听这个名字就知道是用来操...