Serializar un dato significa convertirlo en una string de bytes y luego reconstruirlo a partir de dicha string. Si los datos están compuestos en su totalidad por objetos fundamentales de Python, la forma más rápida de serializar los datos es mediante el uso del módulo marshal (para las clases definidas por el usuario, se debe preferir Pickle ). El módulo Marshal contiene funciones que pueden leer y escribir valores de Python en formato binario.
El módulo marshal existe principalmente para admitir la lectura y escritura del código «pseudocompilado» para módulos Python de archivos .pyc. Este módulo no es compatible con todos los tipos de objetos de Python.
Se admiten los siguientes tipos: booleanos, enteros, números de punto flotante, números complejos, strings, bytes, bytearrays, tuplas, listas, conjuntos, conjuntos congelados, diccionarios y objetos de código, donde debe entenderse que tuplas, listas, conjuntos, conjuntos congelados y los diccionarios solo son compatibles siempre que los valores contenidos en ellos sean compatibles. Los singletons None, Ellipsis y StopIteration también se pueden clasificar y desclasificar.
Funciones:
- marshal.version :
Indica el formato utilizado por el módulo.- Versión 0 – Formato histórico
- Versión 1: comparte strings internas
- Versión 2: utiliza un formato binario para números de punto flotante
- Versión 3: compatibilidad con instancias de objetos y recursividad
- Versión 4 – Versión actual
- marshal.dumps(value[, version]) :
La función devuelve el objeto de bytes que se escribiría en un archivo mediante dump(value, file). El argumento de la versión indica el formato de datos que deben usar los volcados. Se genera una excepción ValueError si el valor tiene (o contiene un objeto que tiene) un tipo no admitido.Ejemplo
Python3
# Python code to demonstrate serialization
import
marshal
data
=
{
12
:
'twelve'
,
'feep'
:
list
(
'ciao'
),
1.23
:
4
+
5j
,
(
1
,
2
,
3
):u
'wer'
}
bytes
=
marshal.dumps(data)
print
(bytes)
Producción
{tfeep[tctitatog®Gáz®ó?y@@ittwelve(iiiuwer0}
- marshal.loads(bytes) :
esta función puede reconstruir los datos convirtiendo el objeto similar a bytes en un valor. Se genera EOFError, ValueError o TypeError si no se encuentra ningún valor.Ejemplo
Python3
# Python code to demonstrate de-serialization
import
marshal
data
=
{
12
:
'twelve'
,
'feep'
:
list
(
'ciao'
),
1.23
:
4
+
5j
,
(
1
,
2
,
3
):u
'wer'
}
bytes
=
marshal.dumps(data)
redata
=
marshal.loads(bytes)
print
(redata)
Producción
{12: 'twelve', 1.23: (4+5j), 'feep': ['c', 'i', 'a', 'o'], (1, 2, 3): u'wer'}
- marshal.dump(valor, archivo[, versión]):
esta función se utiliza para escribir el valor de tipo compatible en el archivo binario grabable abierto. Se genera una excepción ValueError si el valor tiene un tipo no admitido. - marshal.load(file) :
Esta función lee un valor del archivo binario legible abierto y lo devuelve. Se genera EOFError, ValueError o TypeError si no se lee ningún valor.
Este artículo es una contribución de Aditi Gupta . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA