Persistance des données Python - Sérialisation d'objets

L'objet fichier intégré de Python retourné par la fonction open () intégrée de Python présente un inconvénient important. Lorsqu'elle est ouverte avec le mode 'w', la méthode write () n'accepte que l'objet string.

Cela signifie que si vous avez des données représentées sous une forme non-chaîne, l'objet de classes intégrées (nombres, dictionnaire, listes ou tuples) ou d'autres classes définies par l'utilisateur, il ne peut pas être écrit directement dans un fichier. Avant d'écrire, vous devez le convertir dans sa représentation sous forme de chaîne.

numbers=[10,20,30,40]
   file=open('numbers.txt','w')
   file.write(str(numbers))
   file.close()

Pour un fichier binaire, argument à write()La méthode doit être un objet octet. Par exemple, la liste d'entiers est convertie en octets parbytearray() fonction puis écrit dans le fichier.

numbers=[10,20,30,40]
   data=bytearray(numbers)
   file.write(data)
   file.close()

Pour lire les données du fichier dans le type de données respectif, une conversion inverse doit être effectuée.

file=open('numbers.txt','rb')
   data=file.read()
   print (list(data))

Ce type de conversion manuelle, d'un objet au format chaîne ou octet (et vice versa) est très fastidieux et fastidieux. Il est possible de stocker l'état d'un objet Python sous forme de flux d'octets directement dans un fichier ou de flux mémoire et de le récupérer dans son état d'origine. Ce processus est appelé sérialisation et désérialisation.

La bibliothèque intégrée de Python contient divers modules pour le processus de sérialisation et de désérialisation.

N ° Sr. Nom et description
1

pickle

Bibliothèque de sérialisation spécifique à Python

2

marshal

Bibliothèque utilisée en interne pour la sérialisation

3

shelve

Persistance des objets pythoniques

4

dbm

bibliothèque offrant une interface avec la base de données Unix

5

csv

bibliothèque pour le stockage et la récupération des données Python au format CSV

6

json

Bibliothèque pour la sérialisation au format JSON universel