如何在不包含父目录的情况下在Python / tar中创建tar.gz存档?

问题描述 投票:0回答:2

我有一个FolderA,其中包含FolderB和FileB。如何创建仅包含FolderB和FileB的tar.gz归档文件,而删除父目录FolderA?我正在使用Python,并且正在Windows计算机上运行此代码。

我已经研究了几个小时。我发现的最佳线索是:How to create full compressed tar file using Python?

在最受好评的答案中,人们讨论了删除父目录的方法,但是这些方法都不适合我。我已经尝试使用arcname,os.walk,并通过subprocess.call()运行tar命令。

我与os.walk关系密切,但是在下面的代码中,它仍然在FolderB和FileB中放置一个“ _”目录。因此,文件结构为ARCHIVE.tar.gz> ARCHIVE.tar>“ _”目录,FolderB,FileB。

def make_tarfile(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        length = len(source_dir)
        for root, dirs, files in os.walk(source_dir):
            folder = root[length:]  # path without "parent"
            for file in files:
                tar.add(os.path.join(root, folder), folder)

我使用以下档案进行存档:

make_tarfile('ARCHIVE.tar.gz', 'C:\FolderA')

有人可以为我的os.walk提供解决方案或其他解决方案吗?

更新:Here is an image showing the contents of my archive.如您所见,存档中有一个要删除的“ _”文件夹-奇怪的是,提取时,只有FolderA和FileB.html显示为存档。从本质上讲,这种行为是正确的,但是如果我可以最后一步从存档中删除“ _”文件夹,那将是完美的。我要问一个更新的问题以限制混乱。感谢您对这一回应。

我有一个FolderA,其中包含FolderB和FileB。如何创建仅包含FolderB和FileB的tar.gz归档文件,而删除父目录FolderA?我正在使用Python,并且正在运行此代码...

python tar
2个回答
0
投票

我已经尝试提供一些示例,说明对源目录的更改如何与最终提取的内容有所不同。


0
投票

这里是执行任务的功能。我在Windows(使用WinRar

© www.soinside.com 2019 - 2024. All rights reserved.