[파이썬] shutil과 `gzip` 또는 `bz2` 모듈의 조합

파이썬의 shutil 모듈은 파일 및 디렉토리 작업을 위한 유용한 함수들을 제공합니다. 이 모듈은 파일 및 디렉토리 복사, 이동, 삭제 등의 작업을 간단하게 처리할 수 있도록 도와줍니다.

또한, gzipbz2 모듈은 파일의 압축 및 압축 해제를 위한 기능을 제공합니다. 이러한 모듈을 함께 사용하면 파일을 압축하거나 압축 해제하는 작업을 손쉽게 수행할 수 있습니다.

이번 글에서는 shutil 모듈과 gzip 혹은 bz2 모듈의 조합을 사용하여 파일을 압축하고 압축 해제하는 방법에 대해 알아보겠습니다.

파일 압축하기

파일을 압축하기 위해서는 gzip 혹은 bz2 모듈을 사용합니다. gzip는 Gzip 압축 형식을 지원하며, bz2는 Bzip2 압축 형식을 지원합니다.

아래는 gzip 모듈을 사용하여 파일을 압축하는 예제 코드입니다.

import gzip

def compress_file(file_path, compressed_file_path):
    with open(file_path, 'rb') as f_in:
        with gzip.open(compressed_file_path, 'wb') as f_out:
            f_out.writelines(f_in)

위 예제에서 compress_file 함수는 file_path로 지정된 파일을 압축하여 compressed_file_path로 지정된 경로에 저장합니다.

이와 비슷하게 bz2 모듈을 사용하여 파일을 압축할 수도 있습니다. 아래는 bz2 모듈을 사용하여 파일을 압축하는 예제 코드입니다.

import bz2

def compress_file(file_path, compressed_file_path):
    with open(file_path, 'rb') as f_in:
        with bz2.open(compressed_file_path, 'wb') as f_out:
            f_out.writelines(f_in)

압축 해제하기

파일을 압축 해제하기 위해서는 gzip 혹은 bz2 모듈의 open 함수를 사용하여 압축 파일을 읽고, 원본 파일에 압축을 해제하면 됩니다.

아래는 gzip 모듈을 사용하여 압축 파일을 해제하는 예제 코드입니다.

import gzip

def decompress_file(compressed_file_path, decompressed_file_path):
    with gzip.open(compressed_file_path, 'rb') as f_in:
        with open(decompressed_file_path, 'wb') as f_out:
            f_out.writelines(f_in)

위 예제에서 decompress_file 함수는 compressed_file_path로 지정된 압축 파일을 읽어 decompressed_file_path로 지정된 경로에 압축 해제합니다.

bz2 모듈을 사용하여 압축 파일을 압축 해제하는 방법도 비슷합니다. 아래는 bz2 모듈을 사용하여 압축 파일을 해제하는 예제 코드입니다.

import bz2

def decompress_file(compressed_file_path, decompressed_file_path):
    with bz2.open(compressed_file_path, 'rb') as f_in:
        with open(decompressed_file_path, 'wb') as f_out:
            f_out.writelines(f_in)

위 예제 코드에서는 bz2 모듈의 open 함수를 사용하여 압축 파일을 읽고, open 함수를 사용하여 원본 파일에 압축을 해제합니다.

이러한 방식으로 shutil 모듈과 gzip 또는 bz2 모듈을 조합하여 파일을 압축하고 압축 해제할 수 있습니다. 이는 파일 백업, 데이터 압축 등 다양한 상황에서 유용하게 사용할 수 있는 기능입니다.