Как создать полный сжатый tar-файл с использованием Python? - PullRequest
83 голосов
/ 09 января 2010

Как я могу создать файл .tar.gz со сжатием в Python?

Ответы [ 3 ]

142 голосов
/ 13 июня 2013

Чтобы построить .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))
79 голосов
/ 09 января 2010
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».

30 голосов
/ 09 января 2010

Вы звоните tarfile.open с mode='w:gz', что означает «Открыть для сжатой записи gzip».

Возможно, вы захотите завершить имя файла (аргумент name на open) .tar.gz, но это не влияет на возможности сжатия.

Кстати, обычно вы получаете лучшее сжатие с режимом 'w:bz2', точно так же, как tar может обычно сжиматься даже лучше с bzip2, чем с gzip.

...