My python version is 3.5 through Anaconda on Windows 10 environment. I'm using Pyminizip because I need password protected for my zip files, and Zipfile doesn't support it yet.

I am able to zip single file through the function pyminizip.compress, and the encrypt function worked as expected. However, when trying to use pyminizip.compress_multiple I always encountered a Python crash (as pictures) and I believe it's due to the problem of my bad input format.

What I would like to know is: What's the acceptable format for input argument src file LIST path? From Pyminizip's documentation:

pyminizip.compress_multiple([u'pyminizip.so', 'file2.txt'], "file.zip", "1233", 4, progress)
Args:
1. src file LIST path (list)
2. dst file path (string)
3. password (string) or None (to create no-password zip)
4. compress_level(int) between 1 to 9, 1 (more fast) <---> 9 (more compress)

It seems the first argument src file LIST path should be a list containing all files required to be zipped. Accordingly, I tried to use compress_multiple to compress single file with command:

pyminizip.compress_multiple( ['Filename.txt'], 'output.zip', 'password', 4, optional)

and it lead to Python crash. So I try to add a full path into the args.

pyminizip.compress_multiple( [os.getcwd(), 'Filename.txt'], ... )

and still, it crashed again. So I think maybe I have to split the path like this

path = os.getcwd().split( os.sep )
pyminizip.compress_multiple( [path, 'Filename.txt'], ...)

still got a bad luck. Any ideas?

1

2 Answers

Pyminizip requires the path name (or relative path name from where the script is running from) in the files.

Your example:

pyminizip.compress_multiple( [os.getcwd(), 'Filename.txt'], ... ) 

gives a list of files of os.getcwd(), and then another file, 'Filename.txt'. You need to combine them into a single path using os.path.join()

in your filename example, you will need:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename.txt')],...) 

conversly:

pyminizip.compress_multiple( [os.path.join(getcwd(), 'Filename1.txt'), os.path.join(getcwd(), 'Filename2.txt')],...) 

From here - , the usage of compress_multiple is

pyminizip.compress_multiple([u'pyminizip.so', 'file2.txt'], [u'/path_for_file1', u'/path_for_file2'], "file.zip", "1233", 4, progress)

The second parameter is a bit confusing, but if used, it will create a zip file, which when uncompressed, will create a directory structure like:

enter image description here

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.