Python Glossary English

все Python 3tarfileисключение

tarfile.ExtractError

исключения

Исключение tarfile для некритичных ошибок распаковки; поднимается, только если errorlevel равен 2.

Синтаксис

except tarfile.ExtractError:

При умолчании errorlevel=1 некритичные ошибки (например, не удалось сменить владельца или время файла) только пишутся в отладочный лог, и распаковка молча продолжается — файл получится, но с не теми атрибутами. Чтобы о них узнать, открывают архив с errorlevel=2. Свой фильтр может бросить ExtractError, чтобы пропустить член, не обрывая распаковку.

Примеры

# Python 3.12+
import os, tarfile
for name in ('keep.txt', 'skip.txt'):
    with open(name, 'w', encoding='utf-8') as f:
        f.write(name)
with tarfile.open('x.tar', 'w') as tar:
    tar.add('keep.txt')
    tar.add('skip.txt')
def no_skip(member, path):
    if member.name == 'skip.txt':
        raise tarfile.ExtractError('пропуск')
    return tarfile.data_filter(member, path)
with tarfile.open('x.tar') as tar:
    tar.extractall('out', filter=no_skip)
print(sorted(os.listdir('out')))  # → ['keep.txt'] — при errorlevel=1 молча пропущен
with tarfile.open('x.tar', errorlevel=2) as tar:
    try:
        tar.extractall('out2', filter=no_skip)
    except tarfile.ExtractError as e:
        print(e)  # → пропуск

См. также

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