我有一个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,并且正在运行此代码...
我已经尝试提供一些示例,说明对源目录的更改如何与最终提取的内容有所不同。
这里是执行任务的功能。我在Windows(使用WinRar