Python Glossary English

Python 3.2+shutilфункция

shutil.unpack_archive()

архивы

Распаковывает архив zip или tar в каталог; формат угадывается по расширению имени файла.

Синтаксис

shutil.unpack_archive(filename, extract_dir=None, format=None, *, filter=None)

Формат определяется по имени, а не по содержимому: файл без привычного расширения даёт shutil.ReadError, хотя внутри может быть нормальный zip, — тогда формат передают явно. Без extract_dir архив распаковывается в текущий каталог. Архив из чужих рук опасен: tar может писать за пределы каталога; параметр filter (с 3.12, по умолчанию с 3.14 — 'data') это ограничивает.

Примеры

import os, shutil
os.mkdir('data')
open('data/a.txt', 'w').close()
name = shutil.make_archive('pack', 'gztar', root_dir='data')
shutil.unpack_archive(name, 'out', filter='data')  # без filter 3.12–3.13 предупреждают
print(os.listdir('out'))  # → ['a.txt']
import os, shutil
os.mkdir('data')
open('data/a.txt', 'w').close()
name = shutil.make_archive('pack', 'zip', root_dir='data')
os.rename(name, 'pack.bin')
try:
    shutil.unpack_archive('pack.bin', 'out')
except shutil.ReadError as e:
    print(e)  # → Unknown archive format 'pack.bin'
shutil.unpack_archive('pack.bin', 'out', format='zip')
print(os.listdir('out'))  # → ['a.txt']

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности