Сообщить об ошибке.

Функция make_archive() модуля shutil в Python

Создать zip или tar архив файла или каталога

Синтаксис:

import shutil

shutil.make_archive(base_name, format[, 
                    root_dir[, base_dir[, verbose[, 
                    dry_run[, owner[, group[, logger]]]]]]])

Параметры:

  • base_name - str, имя файла архива,
  • format - str, формат архива,
  • root_dir - str, корневой каталог архива,
  • base_dir - str, каталог, откуда начинается архивирование,
  • verbose - устаревший, не используется и не рекомендуется,
  • dry_run - bool холостой запуск,
  • owner - владелец архива,
  • group - группа архива,
  • logger - экземпляр logging.Logger.

Возвращаемое значение:

  • str, имя файла архива.

Описание:

Функция make_archive() модуля shutil создает архивный файл, например zip или tar и возвращает его имя.

Аргумент base_name - это имя файла для создания архива, включая путь, за вычетом любого расширения, зависящего от формата.

Аргумент format является форматом архива, один из:

  • zip, если доступен модуль zlib,
  • tar, gztar, если доступен модуль zlib,
  • bztar, если доступен модуль bz2,
  • xztar, если доступен модуль lzma]m-lzma.

Аргумент root_dir - это каталог, который будет корневым каталогом архива. Например, обычно запускается chdir в root_dir перед созданием архива.

Изменено в Python 3.12: теперь shutil.make_archive() передает аргумент root_dir пользовательским архиваторам, которые его поддерживают. В этом случае он больше не будет временно изменять текущий рабочий каталог процесса на root_dir для выполнения архивации.

Аргумент base_dir - это каталог, откуда начинается архивирование. То есть base_dir будет общим префиксом всех файлов и каталогов в архиве.

Аргументы root_dir и base_dir по умолчанию являются текущим каталогом.

Если аргумент dry_run имеет значение True, архив не создается, но выполняемые операции записываются в журнал.

Аргументы владелец owner и группа group используются при создании архива tar. По умолчанию используются текущий владелец и группа.

Аргумент logger должен быть объектом, совместимым с PEP 282, обычно это экземпляр logging.Logger.

Аргумент verbose - устаревший, не используется и не рекомендуется.

Вызывает событие аудита shutil.make_archive с аргументами base_name, format, root_dir, base_dir.

Примеры использования:

В этом примере создадим архив tar-файлов с использованием gzip, содержащий все файлы, найденные в каталоге .ssh пользователя:

>>> from shutil import make_archive
>>> import os
>>> archive_name = os.path.expanduser(os.path.join('~', 'myarchive'))
>>> root_dir = os.path.expanduser(os.path.join('~', '.ssh'))
>>> make_archive(archive_name, 'gztar', root_dir)
'/Users/docs-python/myarchive.tar.gz'

Полученный архив содержит:

~$ tar -tzvf /home/docs-python/myarchive.tar.gz
drwx------ docs-python/docs-python     0 2019-12-17 16:57 ./
-rw------- docs-python/docs-python  1554 2019-12-17 16:53 ./known_hosts
-rw------- docs-python/docs-python  1554 2019-12-17 14:06 ./known_hosts.old
-rw------- docs-python/docs-python  1679 2019-09-16 12:02 ./id_rsa
-rw-r--r-- docs-python/docs-python   399 2019-09-16 12:02 ./id_rsa.pub