У меня есть поток, который содержит содержимое .tar, поэтому я работаю с ним, используя tarfile.open ('r |'). Что мне нужно сделать, - это просмотреть список файлов внутри него и прочитать некоторые из них.затем загрузите весь tar в другое место.
Когда я пытаюсь выполнить tarfile.extractfile () после tarfile.getnames (), он вызывает tarfile.StreamError.Но я не могу извлечь файл, имя которого я не знаю.
Как получить список файлов без разрушения tarfile?Я не могу сохранить весь tar в RAM \ disk, потому что некоторые файлы внутри него могут быть больше 10 ГБ.
>>> tf = tarfile.open(fileobj=open('Downloads/clean-alpine.ova', 'rb'), mode='r|')
>>> tfn = tf.getnames()
>>> tfn
['clean-alpine.ovf', 'clean-alpine.mf', 'clean-alpine-disk1.vmdk']
>>> tf.fileobj
<tarfile._Stream object at 0x7ff878dac7b8>
>>> tf.fileobj.pos
33595392
>>> ovf = tf.extractfile('clean-alpine.ovf')
>>> ovf
<ExFileObject name=''>
>>> d = ovf.read().decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/tarfile.py", line 696, in read
self.fileobj.seek(offset + (self.position - start))
File "/usr/lib/python3.6/tarfile.py", line 522, in seek
raise StreamError("seeking backwards is not allowed")
tarfile.StreamError: seeking backwards is not allowed