[파이썬] shutil `shutil.make_archive()`의 압축 레벨 설정하기

파이썬 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()` 함수를 사용하는 방법이 있습니다. 원하는 압축 형식과 압축 레벨을 선택하여 파이썬에서 손쉽게 디렉토리를 압축할 수 있습니다.