OS: MAC
참고: 👉 점프 투 파이썬 - 라이브러리 예제 바로가기
048. 데이터 크기를 줄여 전송하려면? ― zlib(지립)
- zlib = 데이터(바이트) 압축의 기본기(데이터 단위 압축)
- 속도 빠름 / 압축률 중간 / 가벼움/ API 전송/ 메모리 저장용
| 구분 | 설명 | 예시 | 결과 |
| 모듈명 | 파이썬 내장 압축 모듈로, DEFLATE 알고리즘을 사용해 데이터를 압축·해제함. 파일이 아닌 메모리 상의 바이트 데이터 압축에 주로 사용됨. |
import zlib | - 네트워크 전송 전 데이터 크기 축소 - 메모리 캐싱 시 공간 절약 |
| 데이터 압축 |
zlib.compress(data [, level]) 데이터(바이트형)를 압축. level은 1~9로 압축 정도 설정 가능 (기본 6) |
import zlib ① data = b"Python data compression" * 10 print(len(data)) # 원본 크기 ② c = zlib.compress(data) print(len(c)) # 데이터 압축 크기 |
① 230 ② 34 |
| 데이터 해제(복원) |
zlib.decompress(data) 압축된 데이터를 원래 상태로 되돌림. |
import zlib d = zlib.decompress(c) print(d[:25]) |
b'Python data compressionPy' |
| 압축 수준 지정 | compress(data, level) level=1 → 빠름 (압축률 낮음) level=9 → 느림 (압축률 높음) |
for lv in [1, 6, 9]: c = zlib.compress(data, lv) print(lv, len(c)) |
1 34 6 34 9 34 ex) 압축률 비교: 9 → 34 bytes |
| 체크섬 계산 |
전송 중 손상 여부를 확인하기 위한 검증값 생성. crc32(data) / adler32(data) 사용 |
zlib.crc32(b"data") # 2918445923 zlib.adler32(b"data") # 67109275 |
CRC32: 32비트 정수 반환 (느리지만 정확) Adler32: 빠르지만 단순 검증용 |
| 파일로 저장하기 |
zlib은 파일 입출력 기능이 없으므로 open()으로 직접 처리함. |
# 압축해서 파일로 저장 with open("data.zlib","wb") as f: f.write(zlib.compress(data)) # 압축 해제 후 읽기 with open("data.zlib","rb") as f: print(zlib.decompress(f.read())) |
b'Python...compression' (data.zlib 파일 생성 및 복원 성공출력) |
| MacOS 주의사항 |
macOS 터미널 zlib 포맷 직접 해제 불가. → 반드시 파이썬 코드로만 압축/해제. |
(CLI에서 gunzip data.zlib 실행 시 오류) | zlib은 gzip, zip과 달리 헤더 정보 없음. 파이썬 전용 포맷 |
라이브러리 예제 문제:

