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:
-
-mx9
significa compresión máxima -
-pSecret^)
significa que la contraseña esSecret^)
.^
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'')