Python Glossary English

Python 3.2+shutilфункция

shutil.register_unpack_format()

архивы

Регистрирует свой формат для unpack_archive(): имя, список расширений и функцию распаковки.

Синтаксис

shutil.register_unpack_format(name, extensions, function, extra_args=None, description='')

Функция вызывается как function(filename, extract_dir, **kwargs). Расширение, уже занятое другим форматом, не перехватывается: регистрация падает с shutil.RegistryError, так что чужой '.zip' подменить нельзя — сначала unregister_unpack_format. Это поведение противоположно register_archive_format, который заменяет формат молча.

Примеры

import os, shutil
def unpack_lst(filename, extract_dir, **kwargs):
    os.makedirs(extract_dir, exist_ok=True)
    for line in open(filename).read().split():
        open(os.path.join(extract_dir, line), 'w').close()
shutil.register_unpack_format('lst', ['.lst'], unpack_lst)
with open('files.lst', 'w') as f:
    f.write('a.txt b.txt')
shutil.unpack_archive('files.lst', 'out')
print(sorted(os.listdir('out')))  # → ['a.txt', 'b.txt']
import shutil
try:
    shutil.register_unpack_format('myzip', ['.zip'], lambda f, d: None)
except shutil.RegistryError as e:
    print(e)  # → .zip is already registered for "zip"

См. также

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

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