30.05.2022 Views

Python_para_todos

Programación en Python

Programación en Python

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Serialización de

objetos

Algunas veces tenemos la necesidad de guardar un objeto a disco para

poder recuperarlo más tarde, o puede que nos sea necesario mandar un

objeto a través de la red, a otro programa en Python ejecutándose en

otra máquina.

Al proceso de transformar el estado de un objeto en un formato que se

pueda almacenar, recuperar y transportar se le conoce con el nombre de

serialización o marshalling.

En Python tenemos varios módulos que nos facilitan esta tarea, como

marshal, pickle, cPickle y shelve.

El módulo marshal es el más básico y el más primitivo de los tres, y

es que, de hecho, su propósito principal y su razón de ser no es el de

serializar objetos, sino trabajar con bytecode Python (archivos .pyc).

marshal sólo permite serializar objetos simples (la mayoría de los tipos

incluidos por defecto en Python), y no proporciona ningún tipo de

mecanismo de seguridad ni comprobaciones frente a datos corruptos o

mal formateados. Es más, el formato utilizado para guardar el bytecode

(y por tanto el formato utilizado para guardar los objetos con marshal)

puede cambiar entre versiones, por lo que no es adecuado para almacenar

datos de larga duración.

pickle, por su parte, permite serializar casi cualquier objeto (objetos de

tipos definidos por el usuario, colecciones que contienen colecciones,

etc) y cuenta con algunos mecanismos de seguridad básicos. Sin embargo,

al ser más complejo que marshal, y, sobre todo, al estar escrito en

113

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!