Skip to main content

Modified version of ruamel.std.zipfile that adds support for encrypted zip archives.

Project description

ruamel.std.encryptedzip is a modified library that adds support for encrypted zip archives to ruamel.std.zipfile; linked below.

https://pypi.org/project/ruamel.std.zipfile/

It is super simple, it just adds an extra parameter to the API:

    def delete_from_zip_file(self, pattern=None, file_names=None, password=None): #Take extra parameter for password.
        """
        zip_file can be a string or a zipfile.ZipFile object, the latter will be closed
        any name in file_names is deleted, all file_names provided have to be in the ZIP
        archive or else an IOError is raised
        """
        if pattern and isinstance(pattern, string_type):
            import re
            pattern = re.compile(pattern)
        if file_names:
            if not isinstance(file_names, list):
                file_names = [str(file_names)]
            else:
                file_names = [str(f) for f in file_names]
        else:
            file_names = []
        with zipfile.ZipFile(self._file_name) as zf:
            zf.setpassword(password) #Set the password for the zip file.
            for l in zf.infolist():
                if l.filename in file_names:
                    file_names.remove(l.filename)
                    continue
                if pattern and pattern.match(l.filename):
                    continue
                self.append(l.filename, zf.read(l))
            if file_names:
                raise IOError('[Errno 2] No such file{}: {}'.format(
                    '' if len(file_names) == 1 else 's',
                    ', '.join([repr(f) for f in file_names])))


def delete_from_zip_file(file_name, pattern=None, file_names=None, password=None): #Take extra parameter for password (overloaded function).
    with InMemoryZipFile(file_name) as imz:
        imz.delete_from_zip_file(pattern, file_names, password) #Parse the extra parameter to the class' method.

It may look scary, but it is very simple. Instead of calling the original function with just a pattern or file_names array, you add an extra parameter where needed:

from ruamelmod import delete_from_zip_file
#Code for zip file stuff goes here
password_zip = b'testing123'
delete_from_zip_file("test.zip", file_names=['test.txt', 'test2.txt'], password=password_zip)

If I remember correctly, Python will throw a TypeError if your password is not encoded into UTF-8 bytes. At the moment, there is no support for directly giving the method your zipfile.ZipFile object, but I will hopefully add support for that in the future.

All credit for code goes to Anthon at Ruamel, all I did was add in a few words and things here and there to add some extra support.

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

ruamel.std.encryptedzip-1.0.1.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

ruamel.std.encryptedzip-1.0.1-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file ruamel.std.encryptedzip-1.0.1.tar.gz.

File metadata

  • Download URL: ruamel.std.encryptedzip-1.0.1.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/49.3.1 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.0+

File hashes

Hashes for ruamel.std.encryptedzip-1.0.1.tar.gz
Algorithm Hash digest
SHA256 baf95c4c75dd482855b794ef23185aae3eb11345aa0d10f1c3982cd0676107b0
MD5 9054ca6d1449137549695ca8c50528dc
BLAKE2b-256 fc475205365637e7a3036f71e984a520b5e113db184ea916878f9d088dfc1f91

See more details on using hashes here.

File details

Details for the file ruamel.std.encryptedzip-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: ruamel.std.encryptedzip-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.23.0 setuptools/49.3.1 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.9.0+

File hashes

Hashes for ruamel.std.encryptedzip-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 84b427db9d6466e78d8f01bfe307bfadcc6a3ffb046b571465e39b95898ae696
MD5 8061e8048b25a93bb7e7f481ff0bac8c
BLAKE2b-256 d220147eecedb6c5ac15eebb3494d71fd8e491763841d388b955d8f9f25a22c2

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