Maison > Article > développement back-end > Cet article vous aidera à comprendre le module pickle en Python
Le module de persistance : c'est pour faire persister les données.
Le module pickle est un module de persistance spécifique à Python qui peut conserver diverses données, y compris des classes personnalisées, et est plus adapté au stockage de données complexes dans Python lui-même.
Cependant, la chaîne persistante n'est pas lisible et ne peut être utilisée que dans l'environnement Python et ne peut pas être utilisée pour l'échange de données avec d'autres langages.
Enregistrez les objets Python directement dans des fichiers sans les convertir d'abord en chaînes, puis les enregistrer, ou en utilisant les opérations d'accès aux fichiers sous-jacentes, écrivez-les directement dans un binaire déposer. Le module pickle créera un format binaire spécifique au langage Python. Il n'exige pas que l'utilisateur prenne en compte les détails du fichier. Il vous aidera à effectuer les opérations de lecture et d'écriture des objets. L'utilisation de Pickle permet d'économiser beaucoup de lignes de code plutôt que d'ouvrir un fichier, de convertir le format des données et d'écrire.
Dans pickle, dumps() etloads() fonctionnent sur le type octets, tandis que lors de l'utilisation de dump() et lload( ) Lors de la lecture et de l'écriture de fichiers, utilisez le mode rb ou wb, ce qui signifie recevoir uniquement des données de type octets.
Convertissez et enregistrez les données Python dans un fichier au format pickle.
with open('data.pickle', 'wb') as f: pickle.dump(data, f)
Ouvrez le fichier de données enregistré ci-dessus avec un éditeur de texte et vous constaterez que tout cela est un encodage illisible.
Résultat en cours :
将Python数据转换为pickle格式的bytes字串。
import pickle dic = {"k1":"v1","k2":123} s = pickle.dumps(dic) print(s)
运行结果:
3. pickle.load(file)
从pickle格式的文件中读取数据并转换为Python的类型。
with open('data.pickle', 'rb') as f: data = pickle.load(f)
将pickle格式的bytes字串转换为Python的类型。
import pickle dic = {"k1":"v1","k2":123} s = pickle.dumps(dic) dic2 = pickle.loads(s) print(dic2)
运行结果:
import pickle with open('data.pickle', 'rb') as f: data = pickle.load(f)
.picklle 格式的文件,用记事本打开是乱码。
运行结果:
Pickle可以持久化Python的自定义数据类型,但是在反持久化的时候,必须能够读取到类的定义。
import pickle class Person: def __init__(self, n, a): self.name = n self.age = a def show(self): print(self.name+"_"+str(self.age)) aa = Person("张三", 20) aa.show() f = open('2.txt', 'wb') pickle.dump(aa, f) f.close() # del Person # 注意这行被注释了 f = open('2.txt', 'rb') bb = pickle.load(f) f.close() bb.show()
运行结果:
Si vous annulez del Person
del Person
这一行的注释,在代码中删除了Person类的定义,那么后面的load()
Le commentaire dans cette ligne supprime la définition de la classe Person dans le code, puis le suivant load()
La méthode
provoquera une erreur.
5. Résumé
🎜Cet article présente principalement le module pickle en Python et donne une introduction détaillée aux principales méthodes du module. 🎜🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!