Я пытаюсь прочитать только один файл из файла tar.gz. Все операции над объектом файла обработан работает отлично, но когда я прочитал от конкретного члена, всегда StreamError поднимается, проверьте этот код:read() из ExFileObject всегда вызывает исключение StreamError
import tarfile
fd = tarfile.open('file.tar.gz', 'r|gz')
for member in fd.getmembers():
if not member.isfile():
continue
cfile = fd.extractfile(member)
print cfile.read()
cfile.close()
fd.close()
cfile.read() всегда вызывает «tarfile.StreamError: поиск в обратном направлении не допускается»
мне нужно прочитать содержимое MEM, не демпинг в файл (extractall работает отлично)
Спасибо!
Есть ли причина, что демпинг в файл не будет работать? Вы можете использовать, например, 'tempfile.mkdtemp', чтобы создать каталог, извлечь его, прочитать нужные файлы и затем удалить каталог. Если у вас нет доступа к любой файловой системе, доступной для записи, или вы пробовали это, и производительность неприемлема, я не могу думать о какой-либо другой причине, чтобы ее исключить. – abarnert
'extractall' в директорию' tmp' – jmunsch