compression level with tarfile (w:gz) ?
Benjamin Kaplan
benjamin.kaplan at case.edu
Mon Aug 10 09:19:43 EDT 2009
On Mon, Aug 10, 2009 at 8:50 AM, Esmail<ebonak at hotmail.com> wrote:
> Hello,
>
> I was wondering if it possible to specify a compression level when I
> tar/gzip a file in Python using the tarfile module. I would like to
> specify the highest (9) compression level for gzip.
>
> Ideally:
>
> t = tarfile.open(tar_file_name+'.tar.gz', mode='w:gz:9')
>
> When I create a simple tar and then gzip it 'manually' with compression
> level 9, I get a smaller archive than when I have this code execute with
> the w:gz option.
>
Looking at the tarfile docs, it seems that there are tarfile.gzopen
and tarfile.bz2open functions that have a compresslevel parameter that
defaults to 9. You can't append using those functions but you can read
and write.
> Is the only way to accomplish the higher rate to create a tar file
> and then use a different module to gzip it (assuming I can specify
> the compression level there)?
>
> Thanks,
> Esmail
>
> -----------------
> My current code:
> -----------------
>
> def tar_it_up(target_dir_name, tar_file_name=None):
> '''
> tar up target_dir_name directory and create a
> tar/zip file with base name tar_file_name
>
> appends a date/timestamp to tar_file_name
> '''
>
> time_string = time.strftime("_%b_%d_%Y_%a_%H_%M")
>
> if tar_file_name is None:
> tar_file_name = target_dir_name
>
> tar_file_name += time_string
>
> print ('Creating archive of %s ...' % target_dir_name),
>
> t = tarfile.open(tar_file_name+'.tar.gz', mode='w:gz')
> # t = tarfile.open(tar_file_name+'.tar', mode='w')
> t.add(target_dir_name)
> t.close()
>
> print ('saved to %s.tar.gz' % tar_file_name)
>
> --
> http://mail.python.org/mailman/listinfo/python-list
>
More information about the Python-list
mailing list