zlib — gzip과 호환되는 압축

zlib — gzip과 호환되는 압축

데이터 압축이 필요한 애플리케이션을 위해 이 모듈의 함수들은 zlib 라이브러리를 사용한 압축과 압축 해제를 허용해요.

이것은 선택적(optional) 모듈이에요. CPython 사본에서 누락되어 있으면 배포자(즉, Python을 제공한 사람)의 문서를 찾아보세요. zlib의 함수에는 많은 옵션이 있고 종종 특정 순서로 사용해야 해요. 이 문서가 모든 조합을 다루려 하지는 않으며, 권위 있는 정보는 zlib 매뉴얼을 참고하세요. .gz 파일을 읽고 쓰려면 gzip 모듈을 참고하세요.

출처: Python documentation

본문

exceptionzlib.error

압축 및 압축 해제 오류에서 발생하는 예외.

zlib.adler32(data, value=1, /)

data의 Adler-32 체크섬을 계산해요. 결과는 부호 없는 32비트 정수예요. value가 있으면 체크섬의 시작 값으로 사용되고, 그렇지 않으면 기본값 1이 사용돼요. 이 알고리즘은 암호학적으로 강하지 않으므로 인증이나 디지털 서명에 사용해서는 안 돼요. 체크섬 알고리즘으로 설계되었으므로 일반 해시 알고리즘으로는 적합하지 않아요.

zlib.compress(data, /, level=Z_DEFAULT_COMPRESSION, wbits=MAX_WBITS)

data의 bytes를 압축해 압축된 데이터를 담은 bytes 객체를 반환해요. level은 압축 수준을 제어하는 0~9 또는 -1의 정수예요(Z_BEST_SPEED(1), Z_BEST_COMPRESSION(9), Z_NO_COMPRESSION(0), 기본 Z_DEFAULT_COMPRESSION(-1) 참고). wbits 인자는 압축 시 사용되는 히스토리 버퍼("윈도우 크기")의 크기와 출력에 헤더와 트레일러가 포함될지 여부를 제어해요. 오류가 발생하면 error 예외를 발생시켜요.

zlib.compressobj(level=Z_DEFAULT_COMPRESSION, method=DEFLATED, wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=Z_DEFAULT_STRATEGY[, zdict])

한 번에 메모리에 들어가지 않을 데이터 스트림을 압축하는 데 사용할 압축 객체를 반환해요. level은 압축 수준, method는 압축 알고리즘(현재 유일하게 DEFLATED 지원), wbits는 윈도우 크기와 헤더/트레일러 형식, memLevel은 내부 압축 상태에 사용되는 메모리 양(1~9), strategy는 압축 알고리즘 튜닝, zdict는 미리 정의된 압축 사전이에요.

zlib.crc32(data, value=0, /)

data의 CRC(Cyclic Redundancy Check) 체크섬을 계산해요. 결과는 부호 없는 32비트 정수예요. 인증이나 디지털 서명에 사용해서는 안 돼요.

zlib.decompress(data, /, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)

data의 bytes를 압축 해제해 압축되지 않은 데이터를 담은 bytes 객체를 반환해요. wbits 매개변수는 창 크기와 기대되는 헤더/트레일러 형식을 제어해요. bufsize는 압축 해제된 데이터를 담는 버퍼의 초기 크기예요.

zlib.decompressobj(wbits=MAX_WBITS, zdict=b'')

한 번에 메모리에 들어가지 않을 데이터 스트림을 압축 해제하는 데 사용할 압축 해제 객체를 반환해요.

압축 객체 메서드

  • Compress.compress(data, /) — 데이터를 압축해 data의 일부분에 대한 압축 데이터를 담은 bytes 객체를 반환해요.
  • Compress.flush(mode=Z_FINISH, /) — 보류 중인 모든 입력을 처리하고 남은 압축 출력을 담은 bytes 객체를 반환해요. Z_FINISH 후에는 compress()를 다시 호출할 수 없어요.
  • Compress.copy() — 압축 객체의 사본을 반환해요.

압축 해제 객체 메서드와 속성

  • Decompress.unused_data — 압축 데이터 끝 너머의 bytes를 담은 bytes 객체
  • Decompress.unconsumed_tail — 마지막 decompress() 호출이 소비하지 않은 데이터를 담은 bytes 객체
  • Decompress.eof — 압축 데이터 스트림의 끝에 도달했는지 여부를 나타내는 부울
  • Decompress.decompress(data, /, max_length=0) — 데이터를 압축 해제해 압축되지 않은 데이터를 담은 bytes 객체를 반환해요. max_length가 0이 아니면 반환값은 max_length보다 길지 않아요.
  • Decompress.flush(length=DEF_BUF_SIZE, /) — 보류 중인 모든 입력을 처리하고 남은 압축 해제 출력을 담은 bytes 객체를 반환해요.
  • Decompress.copy() — 압축 해제 객체의 사본을 반환해요.

상수

압축/압축 해제 동작 구성 상수:

  • zlib.DEFLATED — deflate 압축 방법
  • zlib.MAX_WBITS — 최대 창 크기(2의 거듭제곱). 15이면 32KiB 창 크기
  • zlib.DEF_MEM_LEVEL — 압축 객체의 기본 메모리 수준
  • zlib.DEF_BUF_SIZE — 압축 해제 연산의 기본 버퍼 크기
  • zlib.Z_NO_COMPRESSION — 압축 수준 0; 압축 없음
  • zlib.Z_BEST_SPEED — 압축 수준 1; 가장 빠르고 압축이 가장 적음
  • zlib.Z_BEST_COMPRESSION — 압축 수준 9; 가장 느리고 압축이 가장 많음
  • zlib.Z_DEFAULT_COMPRESSION — 기본 압축 수준(-1); 현재 압축 수준 6과 동등
  • zlib.Z_DEFAULT_STRATEGY — 일반 데이터용 기본 압축 전략
  • zlib.Z_FILTERED — 필터(또는 예측기)가 생성한 데이터용 압축 전략
  • zlib.Z_HUFFMAN_ONLY — Huffman 코딩만 강제하는 압축 전략
  • zlib.Z_RLE — 일치 거리를 1로 제한하는 압축 전략(런 길이 인코딩)
  • zlib.Z_FIXED — 동적 Huffman 코드 사용을 방지하는 압축 전략
  • zlib.Z_NO_FLUSH — 플러시 모드 0; 특별한 플러시 동작 없음
  • zlib.Z_PARTIAL_FLUSH — 플러시 모드 1; 가능한 많은 출력을 플러시
  • zlib.Z_SYNC_FLUSH — 플러시 모드 2; 모든 출력을 플러시하고 바이트 경계에 정렬
  • zlib.Z_FULL_FLUSH — 플러시 모드 3; 모든 출력 플러시 및 압축 상태 재설정
  • zlib.Z_FINISH — 플러시 모드 4; 모든 보류 입력 처리, 더 이상 입력이 기대되지 않음
  • zlib.Z_BLOCK — 플러시 모드 5; deflate 블록 완성 후 출력
  • zlib.Z_TREES — inflate 연산용 플러시 모드 6

버전 정보 상수:

  • zlib.ZLIB_VERSION — 모듈 구축에 사용된 zlib 라이브러리의 버전 문자열
  • zlib.ZLIB_RUNTIME_VERSION — 인터프리터가 실제로 로드한 zlib 라이브러리의 버전 문자열
  • zlib.ZLIBNG_VERSION — zlib-ng가 사용된 경우 모듈 구축에 사용된 zlib-ng 라이브러리의 버전 문자열. (버전 3.14에서 추가)

참고: 자세한 내용은 https://www.zlib.net/manual.html (zlib 매뉴얼)을 참고하세요.

더 알아보기 (Learn more)