久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Python使用pickle進(jìn)行序列化和反序列化的示例代碼

瀏覽:22日期:2022-07-10 13:36:57

一、說明

早上看到Python使用pickle進(jìn)行序列化和反序列化,然后發(fā)現(xiàn)面臨的一個(gè)獲取不到返回值的框架,似乎可以通過在框架中先序列化,然后在外部進(jìn)行反序列化的方法來實(shí)現(xiàn)。就研究了一下pickle庫的具體使用。

本身也沒什么復(fù)雜,一方面還是怕忘記,另一方面是自從學(xué)Java聽到反序化這個(gè)詞開始就有一種莫明其妙的恐具感總覺得是什么高大上的東西。Java反序列化可參見“Java反序列化漏洞實(shí)現(xiàn)”。

二、代碼實(shí)現(xiàn)

import pickleclass 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ì)象的變量的值:

Python使用pickle進(jìn)行序列化和反序列化的示例代碼

參考:

https://docs.python.org/3/library/pickle.html

以上就是Python使用pickle進(jìn)行序列化和反序列化的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于python 序列化和反序列化的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 泗阳县| 迭部县| 南部县| 弥渡县| 五大连池市| 湘阴县| 清原| 西充县| 富裕县| 库车县| 岳池县| 长沙市| 永丰县| 廊坊市| 兴文县| 广河县| 弋阳县| 长沙市| 昂仁县| 南汇区| 信宜市| 宜宾市| 安顺市| 阜新| 迭部县| 伊宁市| 那曲县| 扎赉特旗| 定西市| 涿鹿县| 武乡县| 嵊州市| 庆元县| 凉山| 阳春市| 齐齐哈尔市| 当涂县| 花莲市| 道孚县| 芮城县| 观塘区|