[Python-es] Alternativa a Pickle

59 views
Skip to first unread message

kausdiv

unread,
Nov 19, 2013, 7:46:01 AM11/19/13
to La lista de python en castellano
Hola.

Estoy buscando una alternativa a Pickle para que se guarden los datos
codificados mediante clave.

Básicamente lo quiero para guardar una tupla de diccionarios. Pretendo
que no se vean los datos si se edita el archivo.

Y no estoy muy interesado en codificar yo cada elemento del diccionario
de cada elemento de la tupla.

Si alguien conoce algo...

Saludos
_______________________________________________
Python-es mailing list
Pyth...@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Jesús Espino

unread,
Nov 19, 2013, 7:49:02 AM11/19/13
to La lista de python en castellano
json te vale?


2013/11/19 kausdiv <kau...@gmail.com>

Ricardo Azpeitia Pimentel

unread,
Nov 19, 2013, 12:21:08 PM11/19/13
to La lista de python en castellano
SQLite o si no te importa que este deprecado bsddb

Otras alternativas incluyen encriptar tu pickle, json o archivo de texto plano.

Juan BC

unread,
Nov 19, 2013, 12:33:45 PM11/19/13
to La lista de python en castellano

cualquier cosa q te obligue a autenticarte: mysql, postgres no se si zodb tiene eso

Carlos Zuniga

unread,
Nov 19, 2013, 1:01:55 PM11/19/13
to La lista de python en castellano
2013/11/19 kausdiv <kau...@gmail.com>:
> Hola.
>
> Estoy buscando una alternativa a Pickle para que se guarden los datos
> codificados mediante clave.
>
> Básicamente lo quiero para guardar una tupla de diccionarios. Pretendo que
> no se vean los datos si se edita el archivo.
>
> Y no estoy muy interesado en codificar yo cada elemento del diccionario de
> cada elemento de la tupla.
>
> Si alguien conoce algo...
>

Si solo quieres que no husmeen:


In [1]: import json

In [2]: x = json.dumps({'foo': 'bar'}).encode('zlib').encode('base64')

In [3]: print x
eJyrVkrLz1eyUlBKSixSqgUAIJgEVA==

In [4]: json.loads(x.decode('base64').decode('zlib'))
Out[4]: {u'foo': u'bar'}


Saludos
--
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.

Francesc Alted

unread,
Nov 20, 2013, 5:10:33 AM11/20/13
to pyth...@python.org
El objecto VLArray de PyTables es basicamente una tupla de objetos de
longitud variable persistente en disco. Aqui puedes ver un ejemplo muy
basico:

"""
import tables

# Crea el fichero con un VLArray y objetos
with tables.openFile("myfile.h5", "w") as f:
vla = f.createVLArray(f.root, "vla", tables.ObjectAtom())
for i in xrange(1000):
vla.append((i, "H%d" % i))

# Reabre el fichero y lee algunas filas
with tables.openFile("myfile.h5", "r") as f:
print f.root.vla[100:200:20]
"""

El output the esto es:

[(100, 'H100'), (120, 'H120'), (140, 'H140'), (160, 'H160'), (180, 'H180')]

Como ves, el formato admite accessos aleatorios a los elementos de la tupla.

PyTables lo puedes encontrar en las principales distribuciones de Python
(Anaconda, Canopy), asi como en la mayoria de distribuciones Linux.

Saludos,
Francesc
--
Francesc Alted

Andrey Antukh

unread,
Dec 2, 2013, 4:03:04 AM12/2/13
to La lista de python en castellano
bsddb no esta deprecado, lo que pasa es que en python3 no esta en la biblioteca estandar :D
--
Andrey Antukh - Андрей Антух - <ni...@niwi.be>
http://www.niwi.be/about.html
http://www.kaleidos.net/A5694F/

"Linux is for people who hate Windows, BSD is for people who love UNIX"
"Social Engineer -> Because there is no patch for human stupidity"
Reply all
Reply to author
Forward
0 new messages