una descomprimir con comprimir compress carpeta archivos python zip

con - descomprimir rar python



Crear un archivo ZIP encriptado en Python (4)

Creé una biblioteca simple para crear un archivo zip encriptado con contraseña en Python. - aquí

import pyminizip compression_level = 5 # 1-9 pyminizip.compress("src.txt", "dst.zip", "password", compression_level)

La biblioteca requiere zlib.

He comprobado que el archivo se puede extraer en WINDOWS / MAC.

Estoy creando un archivo ZIP con ZipFile en Python 2.5, funciona bien hasta el momento:

import zipfile, os locfile = "test.txt" loczip = os.path.splitext (locfile)[0] + ".zip" zip = zipfile.ZipFile (loczip, "w") zip.write (locfile) zip.close()

pero no pude encontrar cómo encriptar los archivos en el archivo ZIP. Podría usar el sistema y llamar PKZIP -s, pero supongo que debe haber una forma más "Pythonic". Estoy buscando una solución de código abierto.


Puede usar la biblioteca Chilkat . Es comercial, pero tiene una evaluación gratuita y parece bastante agradable.

Aquí hay un ejemplo que obtuve de aquí :

import chilkat # Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip zip = chilkat.CkZip() zip.UnlockComponent("anything for 30-day trial") zip.NewZip("strongEncrypted.zip") # Set the Encryption property = 4, which indicates WinZip compatible AES encryption. zip.put_Encryption(4) # The key length can be 128, 192, or 256. zip.put_EncryptKeyLength(128) zip.SetPassword("secret") zip.AppendFiles("exampleData/*",True) zip.WriteZip()


La respuesta de @ tripleee me ayudó, vea mi prueba a continuación.

Este código funciona para mí en Python 3.5.2 en Windows 8.1 ( 7z ruta añadida al sistema).

rc = subprocess.call([''7z'', ''a'', output_filename + ''.zip'', ''-mx9'', ''-pSecret^)''] + [src_folder + ''/''])

Con dos parámetros:

  1. -mx9 significa compresión máxima
  2. -pSecret^) significa que la contraseña es Secret^) . ^ es escape for ) para el sistema operativo Windows, pero cuando descomprimes, necesitará escribir el ^ .

Sin ^ Windows OS no aplicará la contraseña cuando 7z.exe cree el archivo zip .

Además, si desea usar -mhe interruptor, necesitará que el formato de archivo esté en 7z en lugar de zip .

Espero que eso pueda ayudar.


La pregunta duplicada https://.com/a/2366917/874188 recomienda usar 7z lugar de zip . Mi experiencia confirma esto.

Copie / pegue la respuesta por @JFSebastian aquí también para completar:

Para crear un archivo zip encriptado (llamado ''myarchive.zip'' ) usando la utilidad de 7-Zip abierto 7-Zip :

rc = subprocess.call([''7z'', ''a'', ''-pP4$$W0rd'', ''-y'', ''myarchive.zip''] + [''first_file.txt'', ''second.file''])

Para instalar 7-Zip, escriba:

$ sudo apt-get install p7zip-full

Para descomprimir a mano (para demostrar compatibilidad con zip utitity), escriba:

$ unzip myarchive.zip

Y ingrese P4$$W0rd en el aviso.

O lo mismo en Python 2.6+:

>>> zipfile.ZipFile(''myarchive.zip'').extractall(pwd=''P4$$W0rd'')