Skip to main content

PyZip is a package for handling zip-in-memory content as a dictionary.

Project description

PyZip is a package for managing a zip content as a dictionary.

https://badge.fury.io/py/pyzip.svg https://travis-ci.org/ipazc/pyzip.svg?branch=master https://coveralls.io/repos/github/ipazc/pyzip/badge.svg?branch=master Code Health

Is this zipping process simple enough?

>>> from pyzip import PyZip
>>>
>>> pyzip = PyZip()
>>> pyzip['key1'] = b"content_bytes"
>>> pyzip['key2'] = file_bytes
>>>
>>> pyzip.save("/path/to/file.zip")
>>> zip_bytes = pyzip.to_bytes() # Alternatively, to bytes

It is run on top of the module zipfile, however, in addition to its functionality, PyZip accepts to edit and remove elements of a zip. Furthermore, it provides integrity checks to ensure that elements are successfully stored (SHA256 hash).

Installation

Currently it is only supported Python 3.4.1 onwards:

sudo pip3 install pyzip

Basic Usage

PyZip can easily store content into a zip on the fly. The usage is the same as a normal dictionary:

  • Add content to in-memory zip:

>>> from pyzip import PyZip
>>>
>>> pyzip = PyZip()
>>> pyzip['key1'] = b"content_bytes"
  • Get specific content:

>>> print(pyzip['key1'])
b"content_bytes"
  • Edit content:

>>> pyzip['key1'] = b"replaced_content_bytes"
  • Remove content:

>>> del pyzip['key1']
  • Get zip bytes:

>>> zip_bytes = pyzip.to_bytes()
  • Load from bytes:

>>> pyzip = PyZip().from_bytes(zip_bytes)
  • Save to zip file:

>>> pyzip.save("path/to/file.zip")
  • Load from zip file:

>>> pyzip = PyZip().from_file("path/to/file.zip")
  • Convert existing dictionary into PyZip:

>>> pyzip = PyZip({'file1': b'example', 'file2': b'example2'})
  • It is also possible to convert a multiple level dict into a PyZip:

>>> pyzip = PyZip({'file1': b'example', 'file2': b'example2', 'folder1': {'file1': b'file1 in folder1'}})

Use case

PyZip can be used in along with PyFolder in order to ease the compression and decompression of folders and zips:

Compressing recursively a folder into a zip:

>>> from pyzip import PyZip
>>> from pyfolder import PyFolder
>>>
>>> path_to_compress = "route/to/files"
>>>
>>> pyzip = PyZip(PyFolder(path_to_compress, interpret=False))
>>> pyzip.save("compressed_folder.zip")
>>>

Uncompressing recursively a previously compressed folder from a zip:

>>> from pyzip import PyZip
>>> from pyfolder import PyFolder
>>>
>>> destination = "route/for/uncompress"
>>>
>>> pyzip = PyZip(PyFolder(destination, interpret=False)).from_file("compressed_folder.zip", inflate=False)
>>>

LICENSE

It is released under the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyzip-0.2.0.tar.gz (6.3 kB view details)

Uploaded Source

File details

Details for the file pyzip-0.2.0.tar.gz.

File metadata

  • Download URL: pyzip-0.2.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyzip-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c0b10776d798e4be9d5fe6eec541dd0a9740b6550b12fd4cfa238a085686a298
MD5 82cb32e7855818e2e90614631acc7dab
BLAKE2b-256 4072e29470ecfb5f2bc8cdd2a1b8a6aa14af8d44aa08fe5efa407cd991ce2c64

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page