파이썬에서 전체 디렉토리(폴더)를 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