Python创建的tar.gz文件包含“ _”文件夹,如何删除?

时间:2019-10-17 01:14:10

标签: python

我通过Python创建的.tar.gz文件包含一个“ _”根目录文件夹,我需要将其删除。

这是我正在使用的.tar.gz函数:

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        tar.add(source_dir, arcname='')

我使用以下命令创建.tar.gz: make_tarfile('ARCHIVE.tar.gz','C:\ FolderA')

As you can see, there is a "_" folder added to the .tar.gz. Any suggestions on how I remove it?有趣的是,当我提取.tar.gz时,“ _”文件夹没有出现。从这个意义上讲,这很好。但这将是许多用户使用的.tar.gz,所以我希望它不包含这样的怪癖。

2 个答案:

答案 0 :(得分:0)

在7z界面中看到的是..条目,它添加到每个目录中,以便您可以通过单击它向上导航。它在tar存档中不存在。

请考虑以下内容:

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        for name in os.listdir(source_dir):
            tar.add(os.path.join(source_dir, name), arcname=name)

当称为make_tarfile('ARCHIVE.tar.gz', 'FolderA')时,其中FolderA是:

FolderA/
|-- FolderB
|   `-- example
`-- example

生成包含以下内容的归档文件

example
FolderB/
FolderB/example

现在,我不喜欢这样,因为我更喜欢将tar文件提取到顶级目录中。它们是使用tar -czf ARCHIVE.tar.gz FolderA/创建的,并具有以下条目:

FolderA/
FolderA/example
FolderA/FolderB/
FolderA/FolderB/example

答案 1 :(得分:0)

万一遇到这种情况,请使用7Zip CLI对所需文件夹的所有内容进行通配符复制(将省略父文件夹)。像这样:

subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-ttar', 'C:\ARCHIVE.tar', 'C:\FolderA\*'])
subprocess.call(['C:\Program Files\\7-Zip\\7z.exe', 'a', '-tgzip', 'C:\ARCHIVE.tar.gz', 'C:\ARCHIVE.tar'])

存档中也不会有“ _”文件夹,它会很干净:)