获取解压缩的文件夹名称。tar.gz 文件

Get folder name of unzipped .tar.gz file

我有一个 python 脚本,可以从 .tar.gz 文件中提取所有内容,然后处理提取的文件。

当前提取项目的python代码是:

    tar = tarfile.open(input_file)
    tar.extractall(output_location)
    tar.close()

其中 input file 是 tarball,output_location 是我要将 tarball 解压到的文件夹。

tarball 是通过 tar -czf (output filename) (input folder) 创建的,因此压缩的材料可以保证在一个文件夹中,并且 tarball 中唯一的顶级项目将是那个文件夹。 (输出位置不一定为空。)通常,提取的文件夹名为course,但理论上可以命名为任何名称.

有没有办法在提取之前或之后获取该顶级文件夹的名称?

否则,我可以重命名该文件夹。有没有一种方法可以提取 tarball 的顶级文件夹 inside 中的所有压缩内容,以便我可以将其放入我自己命名的文件夹中?我可以将所有内容解压缩到一个新文件夹中,然后将所有内容拉下一个层次结构,这将是等效的,但感觉就像用大炮射击小昆虫。

您可以使用 os.listdir。在您的情况下,将返回一个包含单个项目的列表,该项目是您需要的目录的名称。

import os
dir_name = os.listdir(output_folder)[0]

或者像这样,除非你有一个预期的条目,否则它会引发:

dir_name, = os.listdir(output_folder)

编辑

要简单地获取存档中 files/directories 的名称,请使用 tar.getnames()。如果您知道自己只有一个,请使用 tar.getnames()[0].

获取它