首頁  >  文章  >  後端開發  >  一文帶你搞懂Python中pickle模組

一文帶你搞懂Python中pickle模組

Go语言进阶学习
Go语言进阶学习轉載
2023-07-25 14:27:161832瀏覽

一、什麼是pickle模組?

什麼是持續化模組?

持續化模組:就是讓資料持久化保存。

pickle模組是Python專用的持久化模組,可以持久化包括自訂類別在內的各種數據,比較適合Python本身複雜數據的存貯。

但是持久化後的字符串是不可認讀的,並且只能用於Python環境,不能用作與其它語言進行資料交換。


二、pickle模組的作用

把Python 物件直接儲存到文件裡,而不需要先把它們轉換成字串再保存,也不需要用底層的文件存取操作,直接把它們寫入到一個二進位檔案裡。 pickle 模組會建立一個 Python 語言專用的二進位格式,不需要使用者考慮任何檔案細節,它會幫你完成讀寫物件操作。 用pickle比你開啟檔案、轉換資料格式並寫入這樣的操作要節省不少程式碼行。


三、主要方法

#在pickle中dumps()和loads()操作的是bytes類型,而在使用dump()和l()


一文帶你搞懂Python中pickle模組

#############讀寫檔案時,要使用rb或wb模式,也就是只接收bytes類型的資料。 ############1. pickle.dump(obj, file)  ############將Python資料轉換並儲存到pickle格式的檔案內。 #########
with open('data.pickle', 'wb') as f:
    pickle.dump(data, f)
#########文字編輯器開啟上面儲存的data文件,會發現其中全是不可認讀的編碼。 ###############執行結果 :######################

2. pickle.dumps(obj)  

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

import pickle
dic = {"k1":"v1","k2":123}
s = pickle.dumps(dic)
print(s)

运行结果:

一文帶你搞懂Python中pickle模組

3. pickle.load(file)  

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

with open('data.pickle', 'rb') as f:
    data = pickle.load(f)

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)

运行结果:

一文帶你搞懂Python中pickle模組


四、项目演示

例1:

import pickle


with open('data.pickle', 'rb') as f:
    data = pickle.load(f)

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

运行结果:

一文帶你搞懂Python中pickle模組


例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()

运行结果:

一文帶你搞懂Python中pickle模組

如果取消對del Person這一行的註釋,在程式碼中刪除了Person類的定義,那麼後面的load()方法將會出現錯誤。

一文帶你搞懂Python中pickle模組


####################本文主要介紹了Python中pickle模組,對模組中主要的方法進行了詳細的介紹。 ######

以上是一文帶你搞懂Python中pickle模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:Go语言进阶学习。如有侵權,請聯絡admin@php.cn刪除