How to compress a tar file in a tar.gz without directory?
我正在寻找一种方法来压缩tar.gz中没有目录的tar文件。
今天,我的代码生成了一个没有目录的tar文件,其中包含"tar file"库和arcname参数,但是当我想在tar.gz中压缩这个tar文件时,我不知道如何删除目录。
在过去的三天里我做了很多测试。
我的代码:
1 2 3 4 5 6 7 8 9 10 11 | Tarname = example.tar ImageDirectory = C:\... TarDirectory = C:\.. tar = tarfile.open(Tarname,"w") tar.add(ImageDirectory,arcname=TarName) tar.close() targz = tarfile.open("example.tar.gz","w:gz") targz.add(TarDirectory, arcname=TarName) targz.close() |
对于单个文件:
1 | tar.add(file, arcname=os.path.basename(file)) |
对于要添加的每个文件。
或者,对于递归目录:
1 2 3 4 5 6 7 | def flatten(tarinfo): tarinfo.name = os.path.basename(tarinfo.name) return tarinfo tar = tarfile.open("example.tar.gz","w:gz") tar.add("directory", filter=flatten) tar.close() |
尝试使用gzip模块:下面是一个如何使用它的示例:
1 2 3 4 5 6 | import gzip f_in = open('file.txt', 'rb') f_out = gzip.open('file.txt.gz', 'wb') f_out.writelines(f_in) f_out.close() f_in.close() |