如何使用Python将文件添加到tarfile中,而不添加目录层次结构?

2024-05-15 20:24:35 发布

您现在位置:Python中文网/ 问答频道 /正文

当我用文件路径调用tarfile对象上的add()时,该文件将被添加到tarball中,并与目录层次结构相关联。换句话说,如果我解压缩tarfile,原始目录层次结构中的目录将被复制。

有没有一种方法可以简单地添加一个没有目录信息的普通文件,从而使生成的tarball产生一个简单的文件列表?


Tags: 文件对象方法路径目录add信息列表
3条回答

您可以在^{}对象(第一个参数)中使用^{},您可以指定一个不同于您要添加的文件的name

这段代码应该将/path/to/filename添加到TAR文件中,但会将其提取为myfilename

tar.addfile(tarfile.TarInfo("myfilename.txt"), open("/path/to/filename.txt"))

使用TarFile.add()方法的arcname参数是匹配目标的另一种简便方法。

示例:您希望将dirrepo/a.git/存档到tar.gz文件,但希望存档中的树根以a.git/开头,而不是以repo/a.git/开头,可以执行以下操作:

archive = tarfile.open("a.git.tar.gz", "w|gz")
archive.add("repo/a.git", arcname="a.git")
archive.close()

也许您可以使用“arcname”参数来TarFile.add(name,arcname)。它采用文件在存档文件中的备用名称。

相关问题 更多 >