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