У меня есть файлы .tar.gz, и я могу извлечь их с помощью:
if (fname.endswith("tar.gz")):
tar = tarfile.open(fname, "r:gz")
tar.extractall()
tar.close()
Но я хочу добавить всю информацию об извлеченном файле в файл .txt, но я не знаю названия папок, которые есть внутри файлов .tar.gz для этого. Можно ли узнать / переименовать папки, если вы не знаете имена, и извлечь их? Спасибо.






Я бы посоветовал сравнить список файлов в каталоге до и после распаковки архива. Дополнительные файлы и папки будут из файла tar.
Каждая запись в tar-файле имеет заголовок TarInfo. Вы можете получить эту информацию несколькими способами, самый простой - итерацией. Это включает имя пути, которым вы можете управлять с помощью функций os.posixpath. Например, учитывая файл tgz, который у меня есть под рукой:
>>> tf = tarfile.open("Downloads/dbutil-0.5.0.tar.gz", "r:gz")
>>> for info in tf:
... print(info.name, "DIR" if info.isdir() else "FILE")
...
dbutil-0.5.0 DIR
dbutil-0.5.0/setup.py FILE
dbutil-0.5.0/dbutil DIR
dbutil-0.5.0/dbutil/connection.py FILE
dbutil-0.5.0/dbutil/__init__.py FILE
dbutil-0.5.0/dbutil/row.py FILE
dbutil-0.5.0/PKG-INFO FILE
dbutil-0.5.0/dbutil.egg-info DIR
dbutil-0.5.0/dbutil.egg-info/dependency_links.txt FILE
dbutil-0.5.0/dbutil.egg-info/PKG-INFO FILE
dbutil-0.5.0/dbutil.egg-info/SOURCES.txt FILE
dbutil-0.5.0/dbutil.egg-info/top_level.txt FILE
dbutil-0.5.0/setup.cfg FILE