2010-02-10 65 views

回答

32

您可以在TarInfo对象中使用tarfile.addfile(),这是第一个参数,您可以指定与您要添加的文件不同的name

这段代码应该添加/path/to/filename到TAR文件,但将其解压为myfilename

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

此外,它也适用于'tar.add()'!要添加整个树,但使用不同的名称,只需执行:tar.add('/ path/to/dir/to/add /',arcname ='newdirname')',然后tar文件将包含一个具有named 'newdirname',并且它的所有内容都是不变的。 – 2010-10-31 01:22:45

+3

并且如果你想保存没有所有目录结构的文件。做'arcname ='。'' – 2016-06-20 18:01:16

+0

什么是这个文件()函数?如何导入它? – 2017-06-14 12:06:49

5

也许你可以使用“arcname”参数TarFile.add(姓名,arcname)。它需要一个替代名称,该文件将存在于档案中。

48

arch参数的TarFile.add()方法是一种替代方便的方法来匹配您的目的地。

例如:你想一个目录回购/ a.git/存档到的tar.gz文件,但您更希望树根在存档通过a.git/但不开始回购/ a.git/,你可以这样做如下:

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

比接受的答案更简单恕我直言 – 2015-10-27 10:17:37

+0

这是一种更好的方法,因为如果您尝试添加目录,则接受的答案将不起作用。 – 2016-06-08 09:59:08

相关问题