[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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章