Під час стиснення всього каталогу (папки) у zip-файл у Python, ви можете використовувати os.scandir() або os.listdir() для створення списку файлів і використовувати модуль zipfile для їх стиснення, але його легше використовувати make_archive () модуля shutil простіше.
Окрім zip, також підтримуються інші формати, такі як tar.
Щоб отримати додаткові відомості про стиснення та розпакування zip-файлів за допомогою модуля zipfile, зверніться до наступної статті.
- Пов’язані статті:zipfile для стиснення та розпакування ZIP-файлів у Python
Стисніть каталог (папку) у 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')
Файл new_shutil.zip, стиснутий із зазначеними вище налаштуваннями без урахування base_dir, буде розпаковано наступним чином.
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