我有一些.tar.gz文件,我可以用:
提取它们if (fname.endswith("tar.gz")):
tar = tarfile.open(fname, "r:gz")
tar.extractall()
tar.close()
但我想在.txt文件中添加提取文件的所有信息,但我不知道文件夹' .tar.gz文件的内部名称。如果您不知道名称并提取它们,是否可以知道/重命名文件夹?谢谢。
答案 0 :(得分:2)
tarfile中的每个条目都有一个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
答案 1 :(得分:1)
我建议在存档提取之前和之后比较目录中的文件列表。其他文件和文件夹将来自tar文件。