[Python] 读取 rar/zip 压缩文件

一. 读取 rar 文件

Python 中 python-unrar 模块依赖于 UnRAR library, 所以需要先安装 UnRAR library

1. 安装 UnRAR library

官网可以找到各种版本的安装包, 下面给出 Linux 版安装的说明

$ cd ~
$ wget http://www.rarlab.com/rar/unrarsrc-5.2.6.tar.gz
$ tar -xvf unrarsrc-5.2.6.tar.gz
$ cd unrar
$ make lib
$ sudo make install-lib

安装好的文件存在 /usr/lib/libunrar.so

2. 安装 python-unrar

安装 unrar

$ pip install unrar

测试

$ python
>>> from unrar import rarfile

如果遇到下面的错误
在这里插入图片描述
表明 unrar 没有找到刚才安装的依赖文件, 这时需要将依赖文件添加为环境变量

打开配置文件

$ vim ~/.bash_profile

写入

export UNRAR_LIB_PATH="/usr/lib/libunrar.so"

使配置生效

$ source ~/.bash_profile
3. 读取 rar 压缩文件夹
  • 获取压缩文件夹包含的文件列表
def get_rar_dir(rar_file_path):
    '''获取rar压缩文件夹dir'''
    rar = rarfile.RarFile(path)
    rar_dir = rar.namelist()

    return rar_dir
  • 获取压缩文件夹中某个 CSV 文件, 并转为 DataFrame
def read_rar(rar_file_path, csv_file_name):
    '''读取rar压缩文件夹中的某个csv文件'''
    rar = rarfile.RarFile(path)
    data = rar.open(rar.namelist()[0])
    df = pd.read_csv(data, header=None)

    return df

二. 解压 zip 文件

1. 安装 zipfile

在 Python 中安装 zipfile 需要根据 Python 版本来安装, 对于 3.7 版本, 运行下面的命令

sudo pip3 install zipfile37 
2. 读取 zip 文件
import zipfile
# 读取 zip 中的 CSV 文件并返回 DataFrame
def read_zip(zip_file_path, csv_file_name):
    '''读取zip压缩文件夹中的某个csv文件'''
    _zip = zipfile.ZipFile(zip_file_path)
    data = _zip.open(csv_file_name)
    df = pd.read_csv(data, header=None)

    return df
# 读取 zip 文件夹的目录
def get_zip_dir(zip_file_path):
    '''获取zip压缩文件夹dir'''
    _zip = zipfile.ZipFile(zip_file_path)
    zip_dir = _zip.namelist()

    return zip_dir
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章