все Python 3tarfileисключение
tarfile.StreamError
исключения
Исключение tarfile: потоковому архиву (режим с '|') нужна операция, требующая перемотки назад.
Синтаксис
except tarfile.StreamError:
Режимы 'r|gz' и 'w|gz' читают и пишут строго вперёд — так можно работать с сокетом или stdin. Но после getmembers() вернуться к уже пройденному члену нельзя: extractfile() даёт StreamError «seeking backwards is not allowed». В потоке члены обрабатывают по одному в цикле for member in tar, сразу читая каждый.
Примеры
import tarfile
with open('a.txt', 'w', encoding='utf-8') as f:
f.write('data')
with tarfile.open('s.tar', 'w') as tar:
tar.add('a.txt')
with tarfile.open('s.tar', 'r|') as tar:
first = tar.getmembers()[0]
try:
tar.extractfile(first).read()
except tarfile.StreamError as e:
print(e) # → seeking backwards is not allowed
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности