728x90
반응형
SMALL
1. 데이터 압축
- 대용량 데이터 및 대량의 파일을 전송 시 전송 속도가 느리며 전송 문제가 발생할 가능성이 매우 높음
- 데이터 압축의 종류
- 손실 압축: 사람이 눈치채지 못할 수준의 정보만 버리고 압축하는 방법
- 무손실 압축: 데이터 손실이 전혀 없는 압축
- 압축률: 압축된 자료량(압축된 데이터 크기) / 원시 자료량(원래 데이터 크기)
- 다양한 압축 알고리즘에 따라 압축 성능 및 시간이 좌우됨
- 압축: 인코딩(encoding)
- 압축 해제: 디코딩(decoding)
2. zlib
- 데이터를 압축하거나 해제할 때 사용하는 모듈
- compress()와 decompress() 함수로 데이터를 압축하거나 해제
- 데이터 크기를 줄여서 전송이 필요한 경우 사용
✅ 'Hello Python!'을 10000번 작성한 문자열을 압축하기
import zlib
data = 'Hello Python!' * 10000
print(len(data))
>>> 130000 # 130000 bytes
# compress(): a bytes-like object is required -> 인코딩 필요
compress_data = zlib.compress(data.encode(encoding='utf-8'))
print(len(compress_data))
>>> 293
✅ 압축한 데이터를 해제하기
org_data = zlib.decompress(compress_data).decode('utf-8') # 인코딩해준 유니코드와 동일
print(len(org_data))
>>> 130000
3. gzip
- 파일을 압축하거나 해제할 때 사용하는 모듈
- 내부적으로 zip 알고리즘을 사용
- with문 사용
- .gz 확장명
✅ 'Hello Python!'을 10000번 작성한 txt파일을 압축하기
import gzip
data = 'Hello Python!' * 10000
# org_data.txt 파일 만듦
with open('org_data.txt', 'wt')as f:
f.write(data)
# # 파일을 압축하고 내용을 'utf-8'로 인코딩함
with gzip.open('compressed.txt.gz', 'wb')as f:
f.write(data.encode('utf-8'))
현재 경로에 compressed.txt.gz 압축파일이 만들어졌다.
✅compressed.txt.gz 압축 해제하기
with gzip.open('compressed.txt.gz', 'rb')as f: # 읽기 모드
org_data = f.read().decode('utf-8')
len(org_data)
>>> 130000
4. zipfile
- 여러개의 파일을 zip 확장자로 합쳐서 압축할 때 사용하는 모듈
✅ sample 폴더의 여러개의 파일을 합쳐 zip 확장자로 압축하기
import zipfile
with zipfile.ZipFile('./sample/새파일.zip','w') as myzip:
myzip.write('./sample/새파일1.txt')
myzip.write('./sample/새파일2.txt')
myzip.write('./sample/새파일3.txt')
myzip.write('./sample/새파일4.txt')
myzip.write('./sample/새파일5.txt')
새파일.zip 압축파일이 생성되었다.
✅ 새파일.zip 압축파일 해제하기
with zipfile.ZipFile('./sample/새파일.zip') as myzip:
myzip.extractall()
압축 해제가 잘 되었다.
5. tarfile
- 여러개의 파일을 tar 확장자로 합쳐서 압축할 때 사용하는 모듈
✅ sample 폴더의 여러개의 파일을 합쳐 tar 확장자로 압축하기
import tarfile
# add()메소드 사용
with tarfile.open('./sample/새파일.tar','w') as mytar:
mytar.add('./sample/새파일1.txt')
mytar.add('./sample/새파일2.txt')
mytar.add('./sample/새파일3.txt')
mytar.add('./sample/새파일4.txt')
mytar.add('./sample/새파일5.txt')
✅ tar 압축 파일 해제하기
with tarfile.open('./sample/새파일.tar') as mytar:
mytar.extractall()
압축해제가 잘 되었다.😀
📄 주피터 노트북으로 작성한 파일
728x90
반응형
LIST
'Python > Basic' 카테고리의 다른 글
[파이썬, Python] DAO, DTO, VO란? & MVC 패턴 (0) | 2023.03.21 |
---|---|
[파이썬, Python] 파이썬으로 파일 정리하기! 📂 (0) | 2023.03.14 |
[파이썬, Python] 파일 입출력 라이브러리 - 2️⃣fnmatch & shutil _파이썬으로 파일 찾기, 복사, 이동하기! (0) | 2023.03.14 |
[파이썬, Python] 파일 입출력 라이브러리 - 1️⃣fileinput & pickle_파일 읽기 및 저장하기! (0) | 2023.03.14 |
[파이썬, Python] 주피터 노트북 (Jupyter notebook) 설치하기 & 주피터 노트북 사용하기! (1) | 2023.03.14 |