Skip to main content

Version: 1.1

Summary

This module provides an extension to the standard tarfile.TarFile class which provides the ability to add files to a TarFile that are compressed on-the-fly. It will only work on an uncompressed output tarfile, since after the data is written it will overwrite the header for the file with the correct size data.

Limitations

  • The object to which the tarfile is being written must support “seek()”, so this cannot work over a socket, nor presumably with a compressed tarfile. Note: re-compressing contents is not very useful.

  • The “close_gz_file” method will be called when calling “close” on the file stream. Note: close_gz_file() and close_file() are interchangeable.

  • The constructor does not support reading, use the open() class method or use the base class tarfile.TarFile constructor.

Example Usage

#!/usr/bin/env python3
import os, sys, shutil

import targzstream

# USAGE:  ./foo.py TARFILE INPUT [ INPUT2 ... ]
#  Eg: ./foo.py myoutput.tar *.cpp *.h

with targzstream.TarFile(sys.argv[1], mode='w') as tarball:
    for fname in sys.argv[2:]:
        st = os.stat(fname)
        with tarball.add_gz_file(name=fname + '.gz', mtime=st.st_mtime,
                                 uid=st.st_uid, gid=st.st_gid, mode=st.st_mode) as fout:
            # Copy the data.
            with open(fname, 'rb') as fin:
                shutil.copyfileobj(fin, fout)
# The end.

TODO

  • Have add_gz_file handle the result of an os.stat. Eg:

    with tarball.gz_file(name=fname + '.gz', stat=os.stat(fname)) as obj:
        with open(fname, 'rb') as fin:
            shutil.copyfileobj(fin, obj)
  • Wrap add_gz_file and close_gz_file as a context manager.

    Done.

  • Allow streaming uncompressed files, too.

    Done.

Metadata

Release files for targzstream 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for targzstream 1.1
File Size Uploaded
targzstream-1.1.tar.gz 3.8 kB Details

Release files / targzstream-1.1.tar.gz

Download URL targzstream-1.1.tar.gz
Size 3.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a1590674ae677c7e23cd3bb7f3961f9a10771474fe96635f3c02e87761b3c5b7
BLAKE2b-256 checksum
How to use checksums
1190bfaf25c10cc779f644d421fd705d21b3bc169bcb797d3aa568a3b7eb57af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.1 This release

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page