Вы не можете получить это без извлечения файла.Однако вам не нужно извлекать его на диск , если вы этого не хотите.Вы можете использовать метод tarfile.TarFile.extractfile
, чтобы получить файлоподобный объект, который затем можно передать tarfile.open
в качестве аргумента fileobj
.Например, с учетом этих вложенных tar-файлов:
$ cat bar/baz.txt
This is bar/baz.txt.
$ tar cvfz bar.tgz bar
bar/
bar/baz.txt
$ tar cvfz baz.tgz bar.tgz
bar.tgz
Вы можете получить доступ к файлам из внутреннего, например, так:
>>> import tarfile
>>> baz = tarfile.open('baz.tgz')
>>> bar = tarfile.open(fileobj=baz.extractfile('bar.tgz'))
>>> bar.extractfile('bar/baz.txt').read()
'This is bar/baz.txt.\n'
, и они будут извлечены только в память.