Descomprimir con PyLZMA

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

preguntado el 12 de junio de 12 a las 22:06

1 Respuestas

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

Interesante, lo revisaré. Si no descubrió cómo instalar PyLZMA, puede probar easy_install - tucha

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.