Skip to main content

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

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)

Source distribution for zip_open 0.2.0
File Size Uploaded
zip_open-0.2.0.tar.gz 4.0 kB 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

Release history Release notifications | RSS feed

This release

0.2.0 This release

1 release file

0.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