все 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Сообщить о неточности