zip_open open file from nested zip file archive.
If you use static file like as ‘data.zip’ and open this from your python code, Your program will become like open(os.path.join(os.path.dirname(__file__), 'data.zip')). But if your packages are packed into packages.zip file (zipped-egg, or cases to gather in one file on Google App Engine matter), your code doesn’t work fine.
In this situation, the file path of data.zip becomes /path/to/packages.zip/data.zip, then your program can’t open the data.zip file.
zip_open package solves this problem.
Features
Open file from nested zip archive file path/name.
Open file from nested zip archive file-like-object.
Using sample1: open the file from zip file
packages1.zip is:
packages1.zip + file1.txt
Open file1.txt:
>>> from zip_open import zopen
>>> fobj = zopen('packages1.zip/file1.txt')
>>> data = fobj.read()
>>> print(data)
I am file1.txt, ok.
You can specifiy zopen subpath args:
>>> fobj = zopen('packages1.zip', 'file1.txt')
>>> print(fobj.read())
I am file1.txt, ok.
These code samples equivalent to below code:
>>> from zipfile import ZipFile
>>> zipobj = ZipFile('packages1.zip')
>>> data = zipobj.read('file1.txt')
>>> print(data)
I am file1.txt, ok.
Using sample2: open the file from nested zip file
packages2.zip is:
packages2.zip
+ data2.zip
+ file2.txt
Open file2.txt:
>>> from zip_open import zopen
>>> fobj = zopen('packages2.zip/data2.zip/file2.txt')
>>> print(fobj.read())
I am file2.txt, ok.
If you want to open from file-like-object, you can call:
>>> zip_fileobj = open('packages2.zip', 'rb')
>>> fobj = zopen(zip_fileobj, 'data2.zip/file2.txt')
>>> print(fobj.read())
I am file2.txt, ok.
then you also call:
>>> from StringIO import StringIO
>>> zip_payload = open('packages2.zip', 'rb').read()
>>> zip_fileobj = StringIO(zip_payload)
>>> fobj = zopen(zip_fileobj, 'data2.zip/file2.txt')
>>> print(fobj.read())
I am file2.txt, ok.
Using sample3: open the file included in package oneself
packages3.zip is:
packages3.zip
+ foo.py
+ file1.txt
+ data3.zip
+ file3.txt
foo.py:
import os
from zip_open import zopen
def loader(filename):
fobj = zopen(os.path.join(os.path.dirname(__file__), filename))
return fobj
execute loader() from interactive shell:
>>> import sys
>>> sys.path.insert(0, 'packages3.zip')
>>> import foo
>>> fobj = foo.loader('file1.txt')
>>> print(fobj.read())
I am file1.txt, ok.
>>> fobj = foo.loader('data3.zip/file3.txt')
>>> print(fobj.read())
I am file3.txt, ok.
Requirements and dependencies
Requirement: Python 2.4 or later
Dependency: Nothing.
ToDo
Add tar.gz file support.
Add using sample document for egg archive.
Support Python3
Add module import feature.
History
0.2.1 (Unreleased)
fixed: test broken (open file as binary)
use distutils.core.setup if no setuptools.
0.2.0 (2011-11-29)
Change license from PSL to Apache License 2.0
Add feature: open from file-like-object.
0.1.0 (2010-7-19)
first release
Metadata
Release files for zip_open 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| zip_open-0.2.0.tar.gz | 4.0 kB | Without provenance | Details |
Release files / zip_open-0.2.0.tar.gz
| Download URL | zip_open-0.2.0.tar.gz |
|---|---|
| Size | 4.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
26dcaa6e4df33a494e62a8140696a90ced8e5659a72c9986f98d3137b898f0cc
|
|
BLAKE2b-256 checksum How to use checksums |
4960943cea8f6a3fce793b7552d0b4f4621745c7c4a3dad654421b87722c0649
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for zip_open 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.