Python Language
Persistance python
Recherche…
Syntaxe
pickle.dump (obj, fichier, protocole = Aucun, *, fix_imports = True)
pickle.load (fichier, *, fix_imports = True, encoding = "ASCII", errors = "strict")
Paramètres
Paramètre | Détails |
---|---|
obj | représentation décapée de obj dans le fichier objet de fichier ouvert |
protocole | un entier, indique au pickler d'utiliser le protocole donné, 0 -ASCII, 1 - ancien format binaire |
fichier | L'argument de fichier doit avoir une méthode write () wb pour la méthode de vidage et pour charger la méthode read () rb |
Persistance python
Les objets tels que les nombres, les listes, les dictionnaires, les structures imbriquées et les objets d'instance de classe vivent dans la mémoire de votre ordinateur et sont perdus dès que le script se termine.
pickle stocke les données de manière persistante dans un fichier séparé.
la représentation décapée d'un objet est toujours un objet octets dans tous les cas, il faut donc ouvrir les fichiers dans wb
pour stocker les données et rb
pour charger les données à partir de pickle.
les données peuvent être différentes, par exemple,
data={'a':'some_value',
'b':[9,4,7],
'c':['some_str','another_str','spam','ham'],
'd':{'key':'nested_dictionary'},
}
Stocker des données
import pickle
file=open('filename','wb') #file object in binary write mode
pickle.dump(data,file) #dump the data in the file object
file.close() #close the file to write into the file
Charger des données
import pickle
file=open('filename','rb') #file object in binary read mode
data=pickle.load(file) #load the data back
file.close()
>>>data
{'b': [9, 4, 7], 'a': 'some_value', 'd': {'key': 'nested_dictionary'},
'c': ['some_str', 'another_str', 'spam', 'ham']}
Les types suivants peuvent être décapés
- Aucun, vrai et faux
- nombres entiers, nombres à virgule flottante, nombres complexes
- chaînes, octets, bytearys
- tuples, listes, ensembles et dictionnaires contenant uniquement des objets picklable
- fonctions définies au niveau supérieur d'un module (en utilisant def, pas lambda)
- fonctions intégrées définies au niveau supérieur d'un module
- classes définies au niveau supérieur d'un module
- instances de telles classes dont le dict ou le résultat de l'appel à getstate ()
Utilitaire de fonction pour enregistrer et charger
Enregistrer les données vers et depuis le fichier
import pickle
def save(filename,object):
file=open(filename,'wb')
pickle.dump(object,file)
file.close()
def load(filename):
file=open(filename,'rb')
object=pickle.load(file)
file.close()
return object
>>>list_object=[1,1,2,3,5,8,'a','e','i','o','u']
>>>save(list_file,list_object)
>>>new_list=load(list_file)
>>>new_list
[1, 1, 2, 3, 5, 8, 'a', 'e', 'i', 'o', 'u'