Python/Python 모듈탐구

[Python] - 모듈탐구 bz2 - 바이트 압축 활용하기

bzip2이라는 확장자가 있다. gzip과 비슷하게 하나의 파일만을 압축할 수 있으며, bz2라는 확장자명을 가진다. (오 모듈 이름이랑 똑같다.) 압축 과정은 다른 정보보안 이론과정에 자세하게 소개하는 것으로 하고 Python에서 bz2의 사용법을 알아보자


파일 압축/해제관련

  • bz2.open(filename, mode="rb"...) : 파일 혹은 데이터를 바이트 혹은 텍스트로 오픈하는 모드이다. 리턴 값은 File 객체이다. 
  • bz2.BZ2FILE(filename, mode="r") : 위에 객체 반환과 같으나, 무조건 binary로 open 한다.

증분 압축/해제관련

  • bz2.BZ2Compressor(compresslevel=9) : 증분 압축기 객체를 반환한다.  compress(data)와 flush()를 사용하고 이 객체는 사라진다.
  • bz2.BZ2Decompressor() : 증분 압축 해체기 객체를 반환한다. decompress(data)를 통해서 압축 해제된 data를 바이트 열로 가져올 수 있다.

일괄 압축/해제관련

  • bz2.compress(data,xompresslevel=9) : 일괄 압축을 수행한다.
  • bz2.decompress(data) : 압축된 data를 압축 해제해서 바이트 열을 반환한다.

사용 예제

import bz2

### 일괄 압축으로 압축하여 target.bz2에 작성
raw = b"I Love Python"
with open("target.bz2","wb") as f:
    f.write(bz2.compress(raw))

### 압축된 target.bz2 에서 문자열 읽기
with open("target.bz2","rb") as f:
    data = f.read()
    print(bz2.decompress(data).decode())

 

* 일괄 압축은 데이터를 인수로 주면서 바로 압축이 수행되고, 증분 압축방식은 압축기 개체가 생성되고 나서 데이터가 추가되는 방식이다.

 

출처 : https://docs.python.org/ko/3/library/bz2.html#incremental-de-compression

 

bz2 — bzip2 압축 지원 — Python 3.9.5 문서

bz2 — bzip2 압축 지원 소스 코드: Lib/bz2.py 이 모듈은 bzip2 압축 알고리즘을 사용하여 데이터 압축과 압축 해제를 위한 포괄적인 인터페이스를 제공합니다. bz2 모듈에는 다음이 포함됩니다: 이 모

docs.python.org