Persistenza dei dati Python - Serializzazione degli oggetti
L'oggetto file incorporato di Python restituito dalla funzione open () incorporata di Python ha un importante difetto. Quando viene aperto con la modalità 'w', il metodo write () accetta solo l'oggetto stringa.
Ciò significa che se i dati sono rappresentati in qualsiasi forma non stringa, l'oggetto di una delle classi incorporate (numeri, dizionario, elenchi o tuple) o altre classi definite dall'utente, non può essere scritto direttamente su file. Prima di scrivere, è necessario convertirlo nella sua rappresentazione di stringa.
numbers=[10,20,30,40]
file=open('numbers.txt','w')
file.write(str(numbers))
file.close()
Per un file binario, argomento a write()il metodo deve essere un oggetto byte. Ad esempio, l'elenco di numeri interi viene convertito in byte dabytearray() funzione e quindi scritto su file.
numbers=[10,20,30,40]
data=bytearray(numbers)
file.write(data)
file.close()
Per rileggere i dati dal file nel rispettivo tipo di dati, è necessario eseguire la conversione inversa.
file=open('numbers.txt','rb')
data=file.read()
print (list(data))
Questo tipo di conversione manuale, di un oggetto in formato stringa o byte (e viceversa) è molto macchinoso e noioso. È possibile memorizzare lo stato di un oggetto Python sotto forma di flusso di byte direttamente in un file o flusso di memoria e ripristinarlo al suo stato originale. Questo processo è chiamato serializzazione e deserializzazione.
La libreria incorporata di Python contiene vari moduli per il processo di serializzazione e deserializzazione.
Sr.No. | Nome e descrizione |
---|---|
1 | pickle Libreria di serializzazione specifica di Python |
2 | marshal Libreria utilizzata internamente per la serializzazione |
3 | shelve Persistenza dell'oggetto pitonico |
4 | dbm libreria che offre interfaccia al database Unix |
5 | csv libreria per l'archiviazione e il recupero dei dati Python in formato CSV |
6 | json Libreria per la serializzazione nel formato JSON universale |