Python使用pickle進(jìn)行序列化和反序列化的示例代碼
一、說明
早上看到Python使用pickle進(jìn)行序列化和反序列化,然后發(fā)現(xiàn)面臨的一個(gè)獲取不到返回值的框架,似乎可以通過在框架中先序列化,然后在外部進(jìn)行反序列化的方法來實(shí)現(xiàn)。就研究了一下pickle庫(kù)的具體使用。
本身也沒什么復(fù)雜,一方面還是怕忘記,另一方面是自從學(xué)Java聽到反序化這個(gè)詞開始就有一種莫明其妙的恐具感總覺得是什么高大上的東西。Java反序列化可參見“Java反序列化漏洞實(shí)現(xiàn)”。
二、代碼實(shí)現(xiàn)
import pickle
class BeSerializing:
def __init__(self):
self.var = "a test string."
def print_var(self):
print(f"self var value is:{self.var}")
class Serializing:
def do_serializing(self):
obj = BeSerializing()
# with的好處是會(huì)最后自動(dòng)釋放獲取的資源,對(duì)于文件就是最后會(huì)自己close()
with open("test_pickle.obj", "wb") as file_handler:
# 序列化,將對(duì)象寫到文件
pickle.dump(obj, file_handler)
class DeSerializing:
def do_serializing(self):
with open("test_pickle.obj", "rb") as file_handler:
# 反序列化,將對(duì)象從文件中還原
# 注意,雖然python的變量不需要使用前先定義類型,但使用時(shí)是要被格式化成確定類型的
# 所以,如果反序列化類和被序列化類不在同一文件中,那么需要將被序列化類import進(jìn)來,不然會(huì)因找不到被反序列化類而反序列化失敗
obj = pickle.load(file_handler)
print(f"obj type: {type(obj)}\n"
f"obj.var value: {obj.var}")
if __name__ == "__main__":
obj_se = Serializing()
obj_se.do_serializing()
obj_de = DeSerializing()
obj_de.do_serializing()
運(yùn)行結(jié)果如下,可以看到成功反序列化并打印出被序列化的對(duì)象的變量的值:

參考:
https://docs.python.org/3/library/pickle.html
以上就是Python使用pickle進(jìn)行序列化和反序列化的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于python 序列化和反序列化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 一文詳解python pickle中的反序列化漏洞
- Python?pickle?二進(jìn)制序列化和反序列化及數(shù)據(jù)持久化詳解
- Python Json與pickle模塊序列化使用介紹
- Python序列化模塊JSON與Pickle
- Python序列化模塊之pickle與json詳解
- Python數(shù)據(jù)序列化之pickle模塊
- Python序列化pickle模塊使用詳解
- Python序列化與反序列化pickle用法實(shí)例
- Python之?dāng)?shù)據(jù)序列化(json、pickle、shelve)詳解
- Python pickle模塊進(jìn)行序列化的實(shí)現(xiàn)示例
相關(guān)文章
機(jī)器學(xué)習(xí)經(jīng)典算法-logistic回歸代碼詳解
這篇文章主要介紹了機(jī)器學(xué)習(xí)經(jīng)典算法-logistic回歸代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
解決Python發(fā)送Http請(qǐng)求時(shí),中文亂碼的問題
這篇文章主要介紹了解決Python發(fā)送Http請(qǐng)求時(shí),中文亂碼的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python中實(shí)現(xiàn)數(shù)組和列表讀取一列的方法
下面小編就為大家分享一篇python中實(shí)現(xiàn)數(shù)組和列表讀取一列的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python實(shí)現(xiàn)統(tǒng)計(jì)文本文件字?jǐn)?shù)的方法
這篇文章主要介紹了Python實(shí)現(xiàn)統(tǒng)計(jì)文本文件字?jǐn)?shù)的方法,涉及Python針對(duì)文本文件讀取及字符串轉(zhuǎn)換、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05
Python常見加密模塊用法分析【MD5,sha,crypt模塊】
這篇文章主要介紹了Python常見加密模塊用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了MD5,sha與crypt模塊加密的相關(guān)實(shí)現(xiàn)方法與操作技巧,需要的朋友可以參考下2017-05-05
解決pytorch-yolov3 train 報(bào)錯(cuò)的問題
今天小編就為大家分享一篇解決pytorch-yolov3 train 報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02

