[파이썬] shutil 디렉토리 별로 다른 압축 포맷 사용하기

파이썬의 shutil은 파일 및 디렉토리의 복사, 이동, 삭제 등 다양한 파일 작업을 수행하는 유용한 모듈입니다. 이제 shutil을 사용하여 서로 다른 압축 포맷을 사용하여 디렉토리를 압축하는 방법을 알아보겠습니다.

zip 포맷으로 디렉토리 압축하기

zip은 가장 널리 사용되는 압축 포맷 중 하나로, 여러 파일 및 디렉토리를 하나의 압축 파일로 묶을 수 있습니다. 다음은 shutil을 사용하여 zip 포맷으로 디렉토리를 압축하는 예제 코드입니다.

import shutil

def zip_directory(directory_path, output_path):
    shutil.make_archive(output_path, 'zip', directory_path)

# 사용 예시
zip_directory('/path/to/source_directory', '/path/to/output_directory/archive.zip')

위의 코드에서 shutil.make_archive() 함수는 지정한 디렉토리를 압축하여 output_path에 정의된 경로와 파일 이름으로 생성합니다.

tar 포맷으로 디렉토리 압축하기

tar는 다수의 파일과 디렉토리를 하나의 파일로 묶을 수 있는 압축 포맷입니다. shutiltar 포맷을 지원하는 shutil.make_archive() 함수를 제공합니다. 다음은 tar 포맷으로 디렉토리를 압축하는 예제 코드입니다.

import shutil

def tar_directory(directory_path, output_path):
    shutil.make_archive(output_path, 'tar', directory_path)

# 사용 예시
tar_directory('/path/to/source_directory', '/path/to/output_directory/archive.tar')

위의 코드에서 shutil.make_archive() 함수는 자동으로 .tar 확장자를 파일 이름에 추가합니다.

tar.gz 포맷으로 디렉토리 압축하기

tar.gztar로 묶은 파일을 gzip 압축한 형태의 압축 포맷입니다. shutil을 사용하여 tar.gz 포맷으로 디렉토리를 압축하는 방법은 다음과 같습니다.

import shutil

def tar_gz_directory(directory_path, output_path):
    shutil.make_archive(output_path, 'gztar', directory_path)

# 사용 예시
tar_gz_directory('/path/to/source_directory', '/path/to/output_directory/archive.tar.gz')

위의 코드에서 shutil.make_archive() 함수의 두 번째 인자를 gztar로 설정하여 tar.gz 형식으로 압축을 수행합니다.

정리

Python의 shutil 모듈을 사용하여 디렉토리를 다른 압축 포맷으로 압축하는 방법을 알아보았습니다. zip, tar, tar.gz 외에도 shutil은 다른 압축 포맷도 지원합니다. 필요에 따라 압축 포맷을 선택하여 shutil을 사용하여 디렉토리를 압축할 수 있습니다.