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

  1. Aucun, vrai et faux
  2. nombres entiers, nombres à virgule flottante, nombres complexes
  3. chaînes, octets, bytearys
  4. tuples, listes, ensembles et dictionnaires contenant uniquement des objets picklable
  5. fonctions définies au niveau supérieur d'un module (en utilisant def, pas lambda)
  6. fonctions intégrées définies au niveau supérieur d'un module
  7. classes définies au niveau supérieur d'un module
  8. 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'


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow