HOWTO · Python
Salva un dizionario in un file in Python
Questo tutorial mostra come salvare un dizionario in un file in Python
In questa pagina
Per salvare un dizionario Python e leggerlo in seguito, scegli il formato in base all’uso dei dati: usa JSON per valori compatibili con JSON quando vuoi un file portabile e leggibile; usa pickle per oggetti Python se il file verrà caricato solo da una fonte attendibile; oppure usa il formato .npy di NumPy se il tuo flusso di lavoro già dipende da NumPy. Ogni esempio qui sotto scrive un file e poi rilegge il dizionario.
Salvare un dizionario su file in Python usando la funzione dump del modulo pickle
Il modulo pickle memorizza oggetti Python in un formato binario specifico di Python. L’esempio seguente scrive un dizionario con pickle.dump() e lo legge con pickle.load(). Usa wb per scrivere byte e rb per leggerli; la directory temporanea rende l’esempio autonomo.
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}
Carica file pickle solo da fonti attendibili: la deserializzazione può eseguire codice. Pickle è utile quando è accettabile una serializzazione specifica di Python, ma non è un formato di interscambio portabile.
Salvare un dizionario su file in Python usando la funzione save della libreria NumPy
Se il tuo progetto usa già NumPy, np.save() può memorizzare un dizionario in un array di oggetti .npy. Per caricare questi dati oggetto è necessario usare allow_pickle=True; chiama .item() sull’array a zero dimensioni caricato per recuperare il dizionario. Anche questo comporta il rischio di fidarsi dei dati pickle caricati. NumPy deve essere installato.
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}
Salvare un dizionario su file in Python usando la funzione dump del modulo json
Per ottenere un file leggibile e scambiabile con altri linguaggi, usa il modulo integrato json di Python se il dizionario contiene valori compatibili con JSON. json.dump() scrive in un file di testo e json.load() lo legge. Un gestore di contesto chiude ogni file anche se un’operazione non riesce. JSON non conserva oggetti Python arbitrari né tutti i tipi Python; per esempio, le classi personalizzate richiedono una strategia di conversione esplicita.
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}