Python:将压缩级别分配给tarfile

Plu*_*ug4 2 python compression tar

我的问题是一个跟进这一个。我想知道如何修改以下代码,以便分配压缩级别:

import os
import tarfile

home = '//global//scratch//chamar//parsed_data//batch0'
backup_dir = '//global//scratch//chamar//parsed_data//'

home_dirs = [ name for name in os.listdir(home) if os.path.isdir(os.path.join(home, name)) ]

for directory in home_dirs:
    full_dir = os.path.join(home, directory)
    tar = tarfile.open(os.path.join(backup_dir, directory+'.tar.gz'), 'w:gz')
    tar.add(full_dir, arcname=directory)
    tar.close()
Run Code Online (Sandbox Code Playgroud)

基本上,代码的作用是循环遍历目录中的每个目录batch0并压缩每个目录(每个目录中有6000多个文件),并tar.gz为中的每个目录创建一个压缩文件//global//scratch//chamar//parsed_data//。我认为默认情况下,压缩级别为= 9,但压缩需要大量时间。我不需要太多压缩。5级就足够了。如何修改上面的代码以包含压缩级别?

Gin*_*ngi 5

compresslevel您可以传递一个属性open()(无需gzopen()直接使用):

tar = tarfile.open(filename, "w:gz", compresslevel=5)
Run Code Online (Sandbox Code Playgroud)

gzip文档中compresslevel可以是1到9之间的数字(默认为9),1是最快,压缩最少的数字,而9是最快和压缩最少的数字。

[ 另请参见tarfile文档 ]