Volver a la página principal
jueves 6 febrero 2025
2

Cómo serializar y deserializar datos en Python con marshal

El módulo marshal en Python permite serializar y deserializar estructuras de datos de manera eficiente. Se utiliza principalmente para guardar y cargar objetos en un formato binario, aunque es menos seguro y flexible que pickle o json.

Uso de marshal en Python

marshal es un módulo estándar de Python que permite convertir estructuras de datos (como listas, diccionarios o tuplas) en un formato binario para su almacenamiento o transmisión.

Importación y funciones principales

import marshal

Principales funciones de marshal

Función Descripción
marshal.dump(obj, file) Serializa un objeto y lo guarda en un archivo binario.
marshal.load(file) Carga un objeto serializado desde un archivo.
marshal.dumps(obj) Serializa un objeto y devuelve los datos como bytes.
marshal.loads(bytes_obj) Deserializa un objeto desde una cadena de bytes.

Ejemplos de uso

Guardar y cargar un objeto en un archivo

import marshal

# Datos a serializar
datos = {"nombre": "Python", "version": 3.11, "modulos": ["os", "sys", "marshal"]}

# Guardar en un archivo binario
with open("datos.marshal", "wb") as f:
    marshal.dump(datos, f)

# Leer desde el archivo binario
with open("datos.marshal", "rb") as f:
    datos_cargados = marshal.load(f)

print(datos_cargados)  # {'nombre': 'Python', 'version': 3.11, 'modulos': ['os', 'sys', 'marshal']}

Convertir un objeto a bytes

import marshal

datos = [1, 2, 3, {"a": 10, "b": 20}]

# Serializar a bytes
bytes_obj = marshal.dumps(datos)

# Deserializar desde bytes
datos_recuperados = marshal.loads(bytes_obj)

print(datos_recuperados)  # [1, 2, 3, {'a': 10, 'b': 20}]

Consideraciones sobre marshal

  • No es seguro para datos externos: Puede ejecutar código malicioso si se usa con datos de fuentes desconocidas.
  • No garantiza compatibilidad entre versiones: Los formatos de marshal pueden cambiar entre versiones de Python.
  • Más rápido que pickle, pero menos flexible: Se usa internamente para almacenar bytecode de Python (.pyc).

Referencias

Documentación oficial de Python: marshal — Serialización interna de objetos

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer