ddvv@home:~$

Unrar库的使用

摘要

主要实现Python和C在windows和linux上的调用

  1. 实现利用python调用unrar解压rar文件。<完成:2019-11-16>

windows环境

准备工作

  1. 安装python的unrar库,执行命令pip install unrar
  2. 下载windows下的unrardll库,下载地址www.rarlab.com/rar_add.htm,选择下载UnRAR.dll
  3. 解压UnRAR.dll到任意路径,结构目录如附录所示

环境变量设置(64位为例)

有三种使用方式:

  1. 添加Path环境变量:将UnRAR64.dll所在路径添加至Path环境变量中,并重命名UnRAR64.dll为unrar.dll
  2. 添加UNRAR_LIB_PATH环境变量:将UnRAR64.dll的绝对路径添加到UNRAR_LIB_PATH环境变量中
  3. 修改unrarlib.py(一般路径:在python安装路径下\Lib\site-packages\unrar\unrarlib.py)中第43行(lib_path = lib_path or find_library("unrar.dll"))的lib_path参数直接设置为UnRAR64.dll的绝对路径

注意:前两种方式设置完成之后需要重启python终端,是终端重新加载环境变量。第3种方式不用重启终端,但不推荐。

示例代码

# -*- coding: utf-8 -*-
# @Time    :   2019/11/16 11:55:49
# @Author  :   ddvv
# @Site    :   https://www.cnblogs.com/ddvv
# @File    :   test_unrar.py
# @Software:   Visual Studio Code
# @Desc    :   None


import os
from unrar import rarfile


def main():
    list_dir = r'@which_dir'
    for p, dirs, filenames in os.walk(list_dir):
        for filename in filenames:
            f = os.path.join(list_dir, filename)
            try:
                if rarfile.is_rarfile(f):
                    print(filename)
                    rfile = rarfile.RarFile(f)
                else:
                    continue
            except Exception as e:
                print('%s failed rar! %s' % (filename, str(e)))
                continue
            names = rfile.namelist()
            for name in names:
                pass
                # 解压到当前目录
                # e_name = rfile.extract(name)
                # print('%s extract to %s' % (name, e_name))


if __name__ == "__main__":
    main()

附录

Documentation	// 文档信息目录
Examples			// 各种语言示例代码目录
	| -- C
	| -- C#
	| -- Delphi
	| -- Free Pascal
	| -- MASM
	| -- Perl
	| -- VB.NET
	| -- VBasic Sample 1
	| -- VBasic Sample 2
	| -- Virtual Pascal
	| -- readme.txt
NoCrypt			// 不支持加密和密码设置的版本
x64				// 64位版本
license.txt		// license
UnRAR.dll		// 32位dll
unrar.h			// 头文件
UnRAR.lib		// lib文件
whatsnew.txt		// 更新说明