Pickle, che fa parte della libreria Python per impostazione predefinita, è un modulo importante ogni volta che è necessaria la persistenza tra le sessioni utente. Come modulo, pickle prevede il salvataggio di oggetti Python tra i processi.
Se stai programmando per a Banca dati, gioco, forum o qualche altra applicazione che deve salvare informazioni tra sessioni, pickle è utile per salvare identificatori e impostazioni. Il modulo pickle può memorizzare elementi come tipi di dati come booleani, stringhe e array di byte, elenchi, dizionari, funzioni e altro.
Nota: Il concetto di decapaggio è anche noto come serializzazione, marshalling e appiattimento. Tuttavia, il punto è sempre lo stesso: salvare un oggetto in un file per il successivo recupero. Il decapaggio esegue ciò scrivendo l'oggetto come un lungo flusso di byte.
Codice di esempio Pickle in Python
Per scrivere un oggetto in un file, utilizzare un codice nella sintassi seguente:
sottaceto di importazione
object = Object ()
filehandler = open (nome file, 'w')
pickle.dump (oggetto, filehandler)
Ecco come appare un esempio del mondo reale:
sottaceto di importazione
importare la matematica
object_pi = math.pi
file_pi = open ('filename_pi.obj', 'w')
pickle.dump (object_pi, file_pi)
Questo frammento scrive il contenuto di object_pi al file gestore file_pi, che a sua volta è associato al file filename_pi.obj nella directory di esecuzione.
Per ripristinare il valore dell'oggetto in memoria, caricare l'oggetto dal file. Supponendo che il sottaceto non sia ancora stato importato per l'uso, iniziare importandolo:
sottaceto di importazione
filehandler = open (nome file, 'r')
object = pickle.load (filehandler)
Il seguente codice ripristina il valore di pi:
sottaceto di importazione
file_pi2 = open ('filename_pi.obj', 'r')
object_pi2 = pickle.load (file_pi2)
L'oggetto è quindi nuovamente pronto per l'uso, questa volta come object_pi2. Puoi, ovviamente, riutilizzare i nomi originali, se preferisci. Questo esempio usa nomi distinti per chiarezza.
Cose da ricordare su Pickle
Tieni a mente queste cose quando usi il modulo pickle:
- Il protocollo pickle è specifico di Python: non è garantito che sia compatibile con più lingue. Molto probabilmente non è possibile trasferire le informazioni per renderle utili in Perl, PHP, Java o altre lingue.
- Non esiste inoltre alcuna garanzia di compatibilità tra le diverse versioni di Python. L'incompatibilità esiste perché non tutte le strutture di dati Python possono essere serializzate dal modulo.
- Per impostazione predefinita, viene utilizzata l'ultima versione del protocollo pickle. Resta così a meno che non lo modifichi manualmente.
Mancia: Scopri anche come usare shelve per salvare oggetti in Python per un altro metodo per mantenere la continuità dell'oggetto.