2010-02-10 133 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