파이썬 압축 모듈 간단 예시
11 Jan 2020 | References 파이썬목차
1. zlib 모듈
import zlib
long_text = b"who are you" * 1000
# 압축하기
compressed = zlib.compress(long_text)
# 압축 풀기
decompressed = zlib.decompress(compressed)
# 동일한지 확인
print(long_text == decompressed)
True
2. gzip 모듈
위에서 사용한 zlib 모듈과 동일하게 compress, decompress 메서드를 사용한다. 파일을 열 때는 open
메서드를 이용하면 된다. 여는 작업에 대한 코드만 첨부한다. bzip2(bz2), lzma(xz) 형식 파일에 대해서도 유사한 메서드를 이용한다.
import gzip
with gzip.open("data.gz", "rt") as file:
content = file.read()
3. zipfile 모듈
import zipfile
# zip 파일이 맞는지 확인
zipfile.is_zipfile("trasnactions.zip")
# zip 파일 열기
zip = zipfile.ZipFile("trasnactions.zip")
# zip 파일 내 이름 확인 및 추후 사용을 위해 저장
names = []
for name in zip.namelist():
names.append(name)
print(names)
['transaction1.txt', 'transaction2.txt']
# 첫 번째 파일 압축 해제 과정
# 하나만 압축 해제할 때
# ZipInfo 얻기
zipinfo = zip.getinfo(names[0])
print("Filename: ", zipinfo.filename, "date_time: ", zipinfo.date_time)
Filename: transaction1.txt date_time: (2020, 1, 11, 19, 44, 28)
zip.extract(zipinfo)
# 전부 압축 해제할 때
zip.extractall()
# 끝나고 닫아주기
zip.close()
4. tarfile 모듈
위와 유사하다.
import tarfile
# tarfile이 맞는지 확인
tarfile.is_tarfile("transactions.tar")
tar = tarfile.open("transactions.tar")
tar.getnames()
['transaction1.txt', 'transaction2.txt']
# 하나만 압축 해제
tarinfo = tar.getmember(tar.getnames()[0])
print(tarinfo.name, tarinfo.size, tarinfo.mtime, tarinfo.mode)
transaction1.txt 74 1578739467 493
tar.extract(tarinfo)
# 전체 압축 해제
tar.extractall()
tar.close()
Reference
파이썬 라이브러리 레시피, 프리렉 https://docs.python.org/3/library/zipfile.html https://docs.python.org/3/library/tarfile.html