Per serializzare una gerarchia di oggetti, per prima cosa si deve creare un oggetto pickler, successivamente se ne richiami il metodo dump(). Per deserializzare un flusso di dati, si deve creare prima un oggetto unpickler, e poi se ne richiami il metodo load(). Il modulo pickle fornisce la seguente costante:
Il modulo pickle fornisce le seguenti funzioni per rendere questo processo più funzionale:
object, file[, protocol[, bin]]) |
Pickler(file, protocol, bin).dump(object)
.
Se il parametro protocol viene omesso, viene utilizzato il protocollo versione 0. Se protocol viene specificato come un numero negativo o HIGHEST_PROTOCOL, il protocollo con il valore più alto viene utilizzato.
Modificato nella versione 2.3: È stato aggiunto il parametro protocol. Il parametro bin è deprecato e viene fornito soltanto per compatibilità all'indietro con le versioni precedenti. Al suo posto usate il parametro protocol.
Se l'argomento facoltativo bin è vero, viene utilizzato il formato binario di pickle; altrimenti, viene utilizzato il (meno efficiente) formato testo di pickle (per compatibilità all'indietro, questo è predefinito).
Il file deve avere un metodo write() che accetti un argomento di una singola stringa. Può quindi essere un oggetto file aperto in scrittura, un oggetto StringIO, o qualsiasi altro oggetto personalizzato che rispetti questa interfaccia.
file) |
Unpickler(file).load()
.
file deve possedere due metodi, un metodo read() che prende un argomento di tipo intero e un metodo readline() che non richiede argomenti. Entrambi i metodi devono restituire una stringa. Così file può essere un oggetto file aperto in lettura, un oggetto StringIO, o qualsiasi altro oggetto personalizzato che rispetti questa interfaccia.
Questa funzione determina automaticamente se il flusso dei dati viene scritto in modo binario o meno.
object[, protocol[, bin]]) |
Se il parametro protocol viene omesso, si utilizza il protocollo versione 0. Se protocol viene specificato con un valore negativo o con HIGHEST_PROTOCOL, verrà utilizzata la versione con il protocollo maggiore.
Modificato nella versione 2.3: Il parametro protocol è stato aggiunto. Il parametro bin è deprecato e viene fornito solo per compatibilità con le versioni precedenti. Al suo posto, usate il parametro protocol.
Se l'argomento facoltativo bin è vero, pickle viene usato in formato binario; altrimenti (ma meno efficiente) pickle viene usato in formato testo (predefinito).
string) |
Il modulo pickle definisce anche tre eccezioni:
Il modulo pickle esporta anche due oggetti chiamabili 3.3, Pickler e Unpickler:
file[, protocol[, bin]]) |
Se si omette il parametro protocol, viene usato protocol 0. Se si specifica protocol come un valore negativo, verrà usato il protocollo con versione più alta.
Modificato nella versione 2.3: Il parametro bin è deprecato e viene fornito solo per compatibilità all'indietro con le versioni precedenti. Al suo posto, usate il parametro protocol.
Se il parametro facoltativo bin è vero, indica a pickler di usare il più efficiente formato di serializzazione binario, altrimenti viene usato il formato ASCII (predefinito).
L'oggetto file deve avere il metodo write() che accetti una singola stringa di argomenti. Può essere perciò un oggetto file aperto, un oggetto StringIO, o ogni altro oggetto personalizzato che rispetti questa interfaccia.
Gli oggetti Pickler definiscono uno (o due) metodi pubblici:
object) |
) |
mypickler.memo.clear()
In codice che non necessiti di supportare vecchie versioni di Python, usate semplicemente clear_memo().
È possibile effettuare chiamate multiple al metodo dump() per la stessa istanza Pickler. Queste devono quindi essere equivalenti allo stesso numero di chiamate del metodo load() della corrispondente istanza Unpickler. Se lo stesso oggetto viene serializzato da chiamate multiple a dump(), il load() deve rendere tutti i riferimenti allo stesso oggetto. 3.4
Gli oggetti Unpickler vengono definiti come:
file) |
file deve avere due metodi, un metodo read() che prende come argomento un intero, e un metodo readline() che non richiede argomenti. Entrambi i metodi devono restituire una stringa. Così file può essere un oggetto file aperto in lettura, un oggetto StringIO, o qualsiasi altro oggetto personalizzato che rispetti questa interfaccia.
Gli oggetti Unpickler hanno uno (o due ) metodi pubblici:
) |
) |
Note: il metodo noload() è l'unico attualmente disponibile per gli oggetti Unpickler creati dal modulo cPickle. I moduli pickle non serializzabili non hanno il metodo noload().