2010-01-09 120 views

回答

100

要建立一個.tar.gz(又名.tgz)對整個目錄樹:

import tarfile 

def make_tarfile(output_filename, source_dir): 
    with tarfile.open(output_filename, "w:gz") as tar: 
     tar.add(source_dir, arcname=os.path.basename(source_dir)) 
+9

正如對讀者的一個提示,如果你遺漏'arcname = os.path.basename(source_dir)',那麼它會給你'source_dir'的整個路徑結構在tar文件中(在大多數情況下,這可能是不方便的) – Shule 2016-01-30 06:50:10

+0

未定義全局名'tarfile' – NDEthos 2017-02-15 21:03:00

+2

'import tarfile' – 2017-02-16 09:01:48

72
import tarfile 
tar = tarfile.open("sample.tar.gz", "w:gz") 
for name in ["file1", "file2", "file3"]: 
    tar.add(name) 
tar.close() 

如果你想創建一個TAR.BZ2壓縮文件,只需用」 .tar.bz2" 格式並替換文件的擴展名 「W:GZ」 與 「W:BZ2」。

+1

你應該真的在Python中使用'tarfile.open(..',而不是手動調用'open'和'close',打開常規文件時也是如此 – Sheljohn 2017-03-13 17:15:57

28

您可以撥打tarfile.openmode='w:gz',意思是「打開gzip壓縮寫入」。

您可能需要結合使用.tar.gz的文件名(name參數爲open),但不影響壓縮功能。

順便說一句,你平時用的'w:bz2'模式得到更好的壓縮,就像tar平時甚至可以更好地與bzip2壓縮比它可以與gzip壓縮。

+4

只需簡單的說明bzip2-壓縮的壓縮包應以「.tar.bz2」結尾 – 2010-01-09 05:23:16

相關問題