![](/img/trans.png)
[英]Python created tar.gz file contains “_” folder, how to remove?
[英]Nested tar is created while creating simple tar.gz in python
我尝试使用下面的代码使用 python 创建给定目录中存在的所有文件的简单 tar 文件。
在目录 D:/tmp/ 中只有一些常规文件,里面没有子目录。
import os
import tarfile
def createTar(path, tar_name):
with tarfile.open(tar_name, "w:gz") as tar_obj:
for root, dirs, files in os.walk(path):
for file in files:
tar_obj.add(os.path.join(root, file))
createTar("D:/tmp/", "D:/sample.tar.gz")
上面的示例代码有效,但它创建嵌套的 tar 文件,如D:\sample.tar.gz\sample.tar\<all files>
而不是D:\sample.tar.gz\<all files>
的结构,如 tar 文件的创建方式在 linux 上使用 tar 命令。
有人可以解释为什么它会在另一个内部创建两个 tar 文件吗?
您没有嵌套的tar
文件。 您在gz
文件中有一个tar
文件。
您的代码工作正常。
gz
是它自己的格式。 它类似于 zip,但只能保存一个文件。 tar
是一种未压缩的存档格式。 它没有自己的压缩。
因此,每当您看到tar.gz
或tar.bz
或tar.xz
类型的文件时,您都会看到两种工具的组合: tar
存档器和某种压缩器。
您用来打开文件的任何应用程序显然都不是专门为处理压缩的 tar 文件而设计的,因此它将您的文件显示为带有嵌套 tar 的存档,这在技术上是正确的,但大多数现代实用程序都避免像这样显示它.
您可以传递"w"
而不是"w:gz"
,这将创建一个没有嵌套 gz 文件的 tar 文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.