Python function to construct a ZIP archive on the fly – without having to store the entire ZIP in memory or disk. This is useful in memory-constrained environments, or when you would like to start returning compressed data before you’ve even retrieved all the uncompressed data. Generating ZIPs on-demand in a web server is a typical use case for stream-zip.
Offers similar functionality to zipfly, but with a different API, and does not use Python’s zipfile module under the hood.
To unZIP files on the fly try stream-unzip.
pip install stream-zip
from datetime import datetime from stream_zip import stream_zip def unzipped_files(): modified_at = datetime.now() perms = 0o600 def file_1_data(): yield b'Some bytes' def file_2_data(): yield b'Some bytes' yield 'my-file-1.txt', modified_at, perms, file_1_data() yield 'my-file-2.txt', modified_at, perms, file_2_data() for zipped_chunk in stream_zip(unzipped_files()): print(zipped_chunk)
It’s not possible to completely stream-write ZIP files. Small bits of metadata for each member file, such as its name, must be placed at the end of the ZIP. In order to do this, stream-unzip buffers this metadata in memory until it can be output.