Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/uktrade/stream-unzip
Python function to stream unzip all the files in a ZIP archive on the fly
https://github.com/uktrade/stream-unzip
data-infrastructure diapp zip
Last synced: about 2 months ago
JSON representation
Python function to stream unzip all the files in a ZIP archive on the fly
- Host: GitHub
- URL: https://github.com/uktrade/stream-unzip
- Owner: uktrade
- License: mit
- Created: 2021-05-16T14:21:59.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-11-13T09:01:21.000Z (about 2 months ago)
- Last Synced: 2024-11-13T10:18:00.316Z (about 2 months ago)
- Topics: data-infrastructure, diapp, zip
- Language: Python
- Homepage: https://stream-unzip.docs.trade.gov.uk/
- Size: 681 KB
- Stars: 279
- Watchers: 33
- Forks: 13
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# stream-unzip
[![conda-forge package](https://img.shields.io/conda/v/conda-forge/stream-unzip?label=conda-forge&color=%234c1)](https://anaconda.org/conda-forge/stream-unzip) [![PyPI package](https://img.shields.io/pypi/v/stream-unzip?label=PyPI%20package&color=%234c1)](https://pypi.org/project/stream-unzip/) [![Test suite](https://img.shields.io/github/actions/workflow/status/uktrade/stream-unzip/test.yml?label=Test%20suite)](https://github.com/uktrade/stream-unzip/actions/workflows/test.yml) [![Code coverage](https://img.shields.io/codecov/c/github/uktrade/stream-unzip?label=Code%20coverage)](https://app.codecov.io/gh/uktrade/stream-unzip)
Python function to stream unzip all the files in a ZIP archive, without loading the entire ZIP file into memory or any of its uncompressed files.
To create ZIP files on the fly try [stream-zip](https://github.com/uktrade/stream-zip).
## Features
In addition to being memory efficient, stream-unzip supports:
- Deflate-compressed ZIPs. The is the historical standard for ZIP files.
- Deflate64-compressed ZIPs. These are created by certain versions of Windows Explorer in some circumstances. Python's zipfile module cannot open Deflate64-compressed ZIPs.
- Zip64 ZIP files. These are ZIP files that allow sizes far beyond the approximate 4GiB limit of the original ZIP format.
- WinZip-style AES-encrypted / password-protected ZIPs. Python's zipfile module cannot open AES-encrypted ZIPs.
- Legacy-encrypted / password-protected ZIP files. This is also known as ZipCrypto/Zip 2.0. Decrypting ZipCrypto with stream-unzip is approximately 10 times faster than Python's zipfile module.
- ZIP files created by Java's ZipOutputStream that are larger than 4GiB. At the time of writing libarchive-based stream readers cannot read these without error.
- BZip2-compressed ZIPs.
- An async interface that supports both asyncio and trio (which uses threads under the hood).
---
Visit the [stream-unzip documentation](https://stream-unzip.docs.trade.gov.uk/) for usage instructions.