Maison > développement back-end > Tutoriel Python > Cet article vous aidera à comprendre le module pickle en Python

Cet article vous aidera à comprendre le module pickle en Python

Libérer: 2023-07-25 14:27:16
avant
1871 Les gens l'ont consulté

1. Qu'est-ce que le module cornichon ?

Qu'est-ce que le module de persistance ?

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.


2. Le rôle du module pickle

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.


3. Méthodes principales

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.

1. pickle.dump(obj, file)

Convertissez et enregistrez les données Python dans un fichier au format pickle.

with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)
Copier après la connexion

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 :

Cet article vous aidera à comprendre le module pickle en Python

2. pickle.dumps(obj)

将Python数据转换为pickle格式的bytes字串。

import pickle
dic = {"k1":"v1","k2":123}
s = pickle.dumps(dic)
print(s)
Copier après la connexion

运行结果:

Cet article vous aidera à comprendre le module pickle en Python

3. pickle.load(file)

从pickle格式的文件中读取数据并转换为Python的类型。

with open('data.pickle', 'rb') as f:
    data = pickle.load(f)
Copier après la connexion

4. pickle.loads(bytes_object)

将pickle格式的bytes字串转换为Python的类型。

import pickle
dic = {"k1":"v1","k2":123}
s = pickle.dumps(dic)
dic2 = pickle.loads(s)
print(dic2)
Copier après la connexion

运行结果:

Cet article vous aidera à comprendre le module pickle en Python


四、项目演示

例1:

import pickle


with open('data.pickle', 'rb') as f:
    data = pickle.load(f)
Copier après la connexion

.picklle 格式的文件,用记事本打开是乱码。

运行结果:

Cet article vous aidera à comprendre le module pickle en Python


例2

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()
Copier après la connexion

运行结果:

Cet article vous aidera à comprendre le module pickle en Python

Si vous annulez del Persondel 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. Cet article vous aidera à comprendre le module pickle en Python


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!

Étiquettes associées:
source:Go语言进阶学习
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal