Python으로 rar파일 압축풀기

less than 1 minute read

Python으로 rar파일 압축풀기

포스팅 시간 기준 아래 버전들로 테스트 하였습니다.

( Windows 10 , Python 3.8.10 )
PS C:\Users\hg> python --version
Python 3.8.10

RAR 압축파일

윈도우에 있는 대량의 RAR 포맷 압축파일을 풀어서 다시 zip파일로 변환하는 작업을 정리한것을 글로 남기려고 합니다.

러시아 개발자가 개발한 압축 파일 포맷으로 윈도우에서 주로 사용하는 파일 포맷입니다.

WinRAR과 같은 소프트웨어로 압축을 해제해야해서 일일이 압축을 해제하기가 어려워 Python 라이브러리로 해결해보았습니다.


unrar 패키지

PS C:\Users\hg> pip install unrar

실행에 앞서 unrar 라이브러리를 실행하기 위해서는 DLL 파일을 환경변수에 입력해줘야합니다.

rarlab에서 UnRAR dll 파일을 받습니다.

  • exe 파일 다운로드

  • DLL 설치

  • DLL 위치 환경변수에 설정

사용자 변수로 등록
변수 이름 : UNRAR_LIB_PATH
변수 값 : C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll

unrar 패키지로 압축 풀기

사용법은 간단합니다.

from unrar import rarfile

dirname = 'test'

with rarfile.RarFile('test.rar', "r") as rf:
    name = rf.namelist()
    print(name)
    rf.extractall(path=dirname)
PS E:\Dev\test> python .\extract_rar.py
['won.jpg', 'won2.jpg', 'won3.jpg', 'won4.jpg', 'won5.jpg']

with rarfile.RarFile('test.rar', "r",pwd='out123456') as rf: # RAR파일에 비밀번호가 있는경우
    name = rf.namelist()
    rf.extractall(pwd='in123456') # RAR파일 내부 파일에 비밀번호가 있는경우

zip 포맷으로 다시 압축

import zipfile
import os

dirname = 'test'

zf = zipfile.ZipFile('test.zip','w')
for file in os.listdir(dirname):
    # compress_type은 ZIP_DEFLATED, ZIP_BZIP2, ZIP_LZMA 중 하나 사용
    zf.write(os.path.join(dirname,file), compress_type=zipfile.ZIP_LZMA) 
zf.close()

Leave a comment