블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
zipfile 모듈은 Python 3.3 이상부터 지원해준다.
파일 압축
본 예제에서는 디렉토리와 그 하위 모든 파일들을 압축하고 있다.
src_path = r"압축하고 싶은 디렉토리 경로"
base_path, dir_name = os.path.split(src_path)
trg_zip_name = dir_name + ".zip"
cur_path = os.getcwd()
# 현재 디렉토리 경로 변경
os.chdir(base_path)
try:
with zipfile.ZipFile(trg_zip_name, "w", zipfile.ZIP_DEFLATED) as f:
for base_dir, dirs, files in os.walk(src_path):
for file in files:
# 상대 경로를 구한다.
_relpath = os.path.relpath(os.path.join(base_dir, file), base_path)
f.write(_relpath)
finally:
# 원래 디렉토리 위치로 변경
os.chdir(cur_path)
DEFLATE: ZIP, gzip 등의 프로그램에서 사용되는 무손실 압축 데이터 포맷이자 알고리즘이다.
https://ko.wikipedia.org/wiki/DEFLATE
주의
코드 중간에 현재 디렉토리 위치 변경하고 상대경로를 구하는 부분이 있는데, 이처럼 안하면 압축했을때 이상한 구조로 압축파일이 생성된다.
예를 들어 경로가 아래와 같을 때,
- 대상 경로: C:\dev\pdf\target
- 압축 후 경로: C:\dev\pdf\target.zip
절대 경로로 했을 경우
- 압축 내부 디렉토리 구조 dev/pdf/target/*
상대 경로로 했을 경우
- 압축 내부 디렉토리 구조 target/*
반응형
'Language > Python' 카테고리의 다른 글
python으로 qrcode 생성기 만들기 (0) | 2020.08.08 |
---|---|
Python3 문자열에서 특정 문자열 찾기 (0) | 2020.04.12 |
파이썬 스레드(Thread) 특징과 GIL (0) | 2020.04.10 |
파이썬 파일과 이미지 다루기(쓰기, 읽기, 추가하기) (0) | 2020.04.09 |
파이썬의 정렬 알고리즘 sort(), sorted() (2) | 2020.03.25 |