Python에서 디렉토리(폴더)를 zip 또는 tar로 압축

사업

파이썬에서 전체 디렉토리(폴더)를 zip 파일로 압축할 때 os.scandir() 또는 os.listdir()을 사용하여 파일 목록을 만들고 zipfile 모듈을 사용하여 압축할 수 있지만 사용하기가 더 쉽습니다. Shutil 모듈의 make_archive()가 더 쉽습니다.

zip 외에도 tar와 같은 다른 형식도 지원됩니다.

zipfile 모듈을 사용하여 zip 파일을 압축 및 해제하는 방법에 대한 자세한 내용은 다음 문서를 참조하십시오.

디렉토리(폴더)를 zip 파일로 압축:shutil.make_archive()

첫 번째 인수 base_name은 생성할 zip 파일의 이름(확장자 제외)을 지정하고 두 번째 인수 format은 아카이브 형식을 지정합니다.

인수 형식으로 다음을 선택할 수 있습니다.

  • zip'
  • tar'
  • gztar'
  • bztar'
  • xztar'

세 번째 인수인 root_dir은 압축할 디렉터리의 루트 디렉터리 경로를 지정하고 네 번째 인수인 base_dir은 root_dir을 기준으로 압축할 디렉터리의 경로를 지정합니다. 둘 다 기본적으로 현재 디렉토리로 설정됩니다.

base_dir을 생략하면 전체 root_dir이 압축됩니다.

data/temp
예를 들어 다음 구조의 디렉토리가 있다고 가정합니다.

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

base_dir을 생략하고 위의 설정으로 압축된 new_shutil.zip은 다음과 같이 압축이 풀립니다.

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

그런 다음 root_dir의 디렉토리를 base_dir로 지정하면 다음과 같이 표시됩니다.

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

위의 설정으로 압축된 new_shutil_sub.zip은 다음과 같이 압축이 풀립니다.

dir_sub
└── test_sub.txt