[python-esp-centro] Lasi: usar un "codec" como compresor de datos

lasizoillo lasizoillo at gmail.com
Mon Mar 14 21:16:26 CET 2011


El día 14 de marzo de 2011 13:30, Jesus Cea <jcea at jcea.es> escribió:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Javi, dándole vueltas a tu presentación del jueves, se me ha ocurrido
> utilizar un CODEC para que el código python se almacene comprimido y/o
> cifrado.
>

Tienes una lista de los codecs que vienen por defecto para que veas
que la compresión o cifrado (de mentiras) no es algo que se me
ocurriera a mí, sino parte de las baterias de python.
http://docs.python.org/library/codecs.html#standard-encodings

> Entiendo que sería realizable, siempre que meta las cadenas como unicode.
>

No.

>>> type(u"lala".encode("zlib").decode("zlib"))
<type 'str'>

Tanto encode como decode forma parte de basestring. Los codecs de
compresión y encriptación trabajan mejor con cadenas binarias.

> ¿Qué opinas?.
>

Me parece una idea más que recomendable. Pero hay que tener cuidado
con el algoritmo de compresión a elegir. Si la cadena es corta, meter
el diccionario más la cadena comprimida puede ser contraproducente:

>>> cadena_corta = "Esta cadena no es excesivamente larga"
>>> len(cadena_corta)
37
>>> len(cadena_corta.encode("zlib"))
45
>>> len(cadena_corta.encode("bz2"))
69

Y no es que estos codecs no funcionen:

>>> cadena_larga = open("/tmp/fabric.pdf").read()
>>> len(cadena_larga)
195187
>>> len(cadena_larga.encode("zlib"))
117362
>>> len(cadena_larga.encode("bz2"))
116550

Resultado inverso al anterior.

Saludos:

Javi

-- 
--------------------------------------------------------------------------------------------------
Has recibido este mensaje porque estás suscrito al
grupo "python-esp-centro" de Grupos de Google.Para ver los debates visita http://groups.google.com/group/python-esp-centro/topics
--------------------------------------------------------------------------------------------------



More information about the Madrid mailing list