¿Cómo crear un archivo tar completo comprimido usando Python?

¿Cómo puedo crear un archivo .tar.gz con compresión en Python?

Para crear un .tar.gz (aka .tgz ) para un árbol de directorios completo:

 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)) 
 import tarfile tar = tarfile.open("sample.tar.gz", "w:gz") for name in ["file1", "file2", "file3"]: tar.add(name) tar.close() 

Si desea crear un archivo comprimido tar.bz2, simplemente reemplace el nombre de la extensión de archivo con “.tar.bz2” y “w: gz” con “w: bz2”.

Llamas a tarfile.open con mode='w:gz' , que significa “Abrir para escritura comprimida en gzip”.

Probablemente querrá terminar el nombre de archivo (el argumento de name para open ) con .tar.gz , pero eso no afecta las capacidades de compresión.

Por cierto, normalmente obtienes una mejor compresión con un modo de 'w:bz2' , al igual que tar generalmente puede comprimir incluso mejor con bzip2 que con gzip .