Descomprimir con PyLZMA
Frecuentes
Visto 4,424 veces
2
Comprimo mis archivos usando este script
import pylzma, struct
i = open(path+fileName,'rb')
o = open(path+zipName+'.zip','wb')
data = i.read()
c = pylzma.compressfile(data, eos=1)
result = c.read(5)
result += struct.pack('<Q', len(data))
o.write(result + c.read())
i.close()
o.close()
Yo uso este método como se muestra en el Documentación PyLZMA porque permite que mis archivos sean legibles por 7zip o lzma.exe. La descompresión con 7zip funciona bien, pero no funciona cuando uso PyLZMA. Yo uso esto:
i = open(path+name+'.zip', 'rb')
o = open(path+name, 'wb')
data = i.read()
u = pylzma.decompress(data)
o.write(u)
Se detiene en pylzma.decompress y recibo el siguiente error:
TypeError: Error al descomprimir: 1
1 Respuestas
3
Si estoy leyendo el documentación correctamente (tengo problemas para instalar PyLZMA, por lo que no puedo verificar), compress()
genera una cadena que decompress()
puede manejar.
Sin embargo, para que la cadena comprimida sea compatible con otras utilidades, es necesario insertar la longitud de 8 bytes entre los primeros 5 bytes y el resto de los datos comprimidos.
Por lo tanto, si desea descomprimir los datos usando PyLZMA, sospecho que deberá eliminar manualmente ese campo de longitud de 8 bytes (la forma más rápida probablemente sería abrir el archivo de entrada, leer 5 bytes, omitir 8, luego leer el resto de el archivo).
respondido 02 nov., 16:09
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python compression zip lzma or haz tu propia pregunta.
Interesante, lo revisaré. Si no descubrió cómo instalar PyLZMA, puede probar easy_install - tucha