pickle y unpickle de todas las variables locales
Pepe Aracil
pepe en diselpro.com
Vie Feb 6 01:29:32 CET 2009
Hola.
podrías crear un diccionario cuyas claves sean las claves de locals
y sus valores los valores de locals pero serializados.
Algo así como:
[code]
myself={}
exclude=['__builtins__', '__name__', '__doc__','myself','exclude']
for k in locals().keys():
if k in exclude: continue
try:
myself[k] = pickle.dumps(locals()[k])
except:
print "%s no es pickleable" % k
[/code]
No he probado este codigo que he tecleado al vuelo pero ...
cuando termina este bucle, deberias tener en el diccionario
myself todo lo pickleable en locals.
Además podrías guardarte en el diccionario información como las
entradas del diccionario sys.modules, para recontruir el entorno
posteriormente de la forma mas fidedigna posible.
Una vez lo tienes todo empaquetado en myself, ya lo puedes serializar
todo a un fichero.
Deserializar para recontruir el entorno locals ya es trivial.
...
locals()[k]=myself[k]
...
Saludos.
Jose Caballero escribió:
> Hola a todos,
>
> ¿existe alguna forma sencilla de poder serializar todas las variables y
> objetos que hay definidos en cierto momento de ejecución para poder
> de-serializarlos más tarde?
> Con los métodos dump() y load() de la pickle se puede hacer para un único
> objeto, y además éste debe ser conocido a la hora de hacer el load(). Algo
> así como
>
> myobj = pickle.load( file )
>
> Pero yo necesito poder hacer un load de TODAS las variables y objetos. Sería
> algo así como hacer un dump de todo lo que hay listado en locals(), y luego
> poder hacer un load de todo ello.
> ¿Se puede hacer?
>
>
>
> Muchas gracias por adelantado.
> Saludos,
> Jose
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es