파이썬 shutil
모듈에는 make_archive()
함수가 있는데, 이 함수를 사용하면 디렉토리를 압축 파일로 만들 수 있습니다. 이 함수는 base_name
, format
, root_dir
, base_dir
등의 매개변수를 받아 사용합니다. 그 중에서 압축 레벨을 설정하기 위해 shutil.make_archive()
를 구체적으로 다루어보려 합니다.
압축 레벨 설정하기
shutil.make_archive()
함수는 기본적으로 zip
형식의 압축 파일을 생성합니다. 압축 레벨에는 ZIP_STORED
, ZIP_DEFLATED
, ZIP_BZIP2
, ZIP_LZMA
등 다양한 옵션이 있는데, 기본적으로는 ZIP_DEFLATED
가 사용됩니다.
import shutil
shutil.make_archive(base_name, format, root_dir, base_dir, ...)
format
매개변수에 압축 형식을 지정할 수 있습니다. zip
, tar
, gztar
, bztar
, xztar
등 여러 형식을 지원합니다. 이 중에서 gztar
, bztar
, xztar
형식의 경우에는 zipfile.ZIP_DEFLATED
대신 다른 압축 방식을 설정할 수도 있습니다.
압축 레벨 옵션 사용하기
shutil.make_archive()
함수의 압축 레벨을 설정하려면 format
매개변수를 사용하는 방법과 shutil.register_archive_format()
함수를 사용하는 방법이 있습니다.
방법 1: format 매개변수 사용
import shutil
shutil.make_archive(base_name, format='zip', root_dir='.', base_dir='.', compression=shutil.ZIP_BZIP2)
format
매개변수에 지정할 압축 형식 뒤에 compression
매개변수를 추가하여 압축 레벨을 설정할 수 있습니다. 위의 예제에서는 shutil.ZIP_BZIP2
로 압축 레벨을 설정한 것입니다.
방법 2: register_archive_format() 함수 사용
import shutil
import zipfile
def make_bz2_archive():
return shutil.make_archive(base_name, 'zip', root_dir='.', base_dir='.', compression=zipfile.ZIP_BZIP2)
shutil.register_archive_format('bz2', make_bz2_archive, description='Bzip2 compressed archive')
shutil.make_archive(base_name, 'bz2', root_dir='.', base_dir='.')
shutil.register_archive_format()
함수를 사용하여 사용자 정의 압축 형식을 등록할 수 있습니다. 함수로 압축 파일을 생성하고 압축 방식을 설정한 뒤, make_archive()
함수에서 해당 압축 형식을 사용할 수 있습니다.
결론
shutil
make_archive() 함수를 사용하여 디렉토리를 압축 파일로 만들 수 있습니다. 압축 레벨을 설정하기 위해서는
format 매개변수를 사용하는 방법과
shutil.register_archive_format()` 함수를 사용하는 방법이 있습니다. 원하는 압축 형식과 압축 레벨을 선택하여 파이썬에서 손쉽게 디렉토리를 압축할 수 있습니다.