溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python使用pickle實現(xiàn)序列化和反序列化

發(fā)布時間:2020-11-02 16:36:27 來源:億速云 閱讀:154 作者:Leah 欄目:開發(fā)技術

本篇文章給大家分享的是有關Python使用pickle實現(xiàn)序列化和反序列化,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

代碼實現(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的好處是會最后自動釋放獲取的資源,對于文件就是最后會自己close()
  with open("test_pickle.obj", "wb") as file_handler:
   # 序列化,將對象寫到文件
   pickle.dump(obj, file_handler)


class DeSerializing:
 def do_serializing(self):
  with open("test_pickle.obj", "rb") as file_handler:
   # 反序列化,將對象從文件中還原
   # 注意,雖然python的變量不需要使用前先定義類型,但使用時是要被格式化成確定類型的
   # 所以,如果反序列化類和被序列化類不在同一文件中,那么需要將被序列化類import進來,不然會因找不到被反序列化類而反序列化失敗
   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()

運行結果如下,可以看到成功反序列化并打印出被序列化的對象的變量的值:

Python使用pickle實現(xiàn)序列化和反序列化

以上就是Python使用pickle實現(xiàn)序列化和反序列化,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI