HOWTO · Python
Guardar un diccionario en un archivo en Python
Este tutorial muestra cómo guardar un diccionario en un archivo en Python
En esta página
Para guardar un diccionario de Python y leerlo más adelante, elige el formato según el uso que darás a los datos: usa JSON para valores compatibles con JSON si necesitas un archivo portátil y legible; usa pickle para objetos de Python si solo cargarás el archivo desde una fuente de confianza; o usa el formato .npy de NumPy si tu flujo de trabajo ya depende de NumPy. Cada ejemplo guarda un archivo y vuelve a leer el diccionario.
Guardar un diccionario en un archivo en Python con la función dump del módulo pickle
El módulo pickle almacena objetos de Python en un formato binario específico de Python. El siguiente ejemplo escribe un diccionario con pickle.dump() y lo lee con pickle.load(). Usa wb para escribir bytes y rb para leerlos; el directorio temporal permite que el ejemplo sea autónomo.
import pickle
from pathlib import Path
from tempfile import TemporaryDirectory
my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}
with TemporaryDirectory() as directory:
file_path = Path(directory) / "myDictionary.pkl"
with file_path.open("wb") as file:
pickle.dump(my_dict, file)
with file_path.open("rb") as file:
new_dict = pickle.load(file)
print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}
Carga archivos pickle únicamente desde fuentes de confianza: la deserialización puede ejecutar código. Pickle resulta útil cuando es aceptable serializar en un formato específico de Python, pero no es un formato de intercambio portátil.
Guardar un diccionario en un archivo en Python con la función save de la biblioteca NumPy
Si tu proyecto ya usa NumPy, np.save() puede almacenar un diccionario en un arreglo de objetos .npy. Para cargar esos datos de objetos se requiere allow_pickle=True; llama a .item() en el arreglo de dimensión cero cargado para recuperar el diccionario. Esto también conlleva el riesgo de confianza asociado a la carga de datos serializados con pickle. NumPy debe estar instalado.
import numpy as np
from pathlib import Path
from tempfile import TemporaryDirectory
my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}
with TemporaryDirectory() as directory:
file_path = Path(directory) / "dictionary.npy"
np.save(file_path, my_dict)
new_dict = np.load(file_path, allow_pickle=True).item()
print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}
Guardar un diccionario en un archivo en Python con la función dump del módulo json
Para obtener un archivo legible que pueda intercambiarse con otros lenguajes, usa el módulo integrado json de Python cuando el diccionario contenga valores compatibles con JSON. json.dump() escribe en un archivo de texto y json.load() lo lee. Un administrador de contexto cierra cada archivo incluso si se produce un error durante una operación. JSON no conserva objetos arbitrarios de Python ni todos sus tipos; por ejemplo, las clases personalizadas requieren una estrategia de conversión explícita.
import json
from pathlib import Path
from tempfile import TemporaryDirectory
my_dict = {"Apple": 4, "Banana": 2, "Orange": 6, "Grapes": 11}
with TemporaryDirectory() as directory:
file_path = Path(directory) / "myDictionary.json"
with file_path.open("w", encoding="utf-8") as file:
json.dump(my_dict, file)
with file_path.open("r", encoding="utf-8") as file:
new_dict = json.load(file)
print(new_dict)
{'Apple': 4, 'Banana': 2, 'Orange': 6, 'Grapes': 11}