1. 程式人生 > >文件IO序列化及反序列化

文件IO序列化及反序列化

vpd pic 保存到文件 type 應用 text 當前 image 單機

序列化 (Serialization)將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。
簡單點言之:通過設計的一套協議,按照莫種規則,把內存中的數據保存到文件中或者直通過網絡傳輸。把數據轉換為字節序列,輸出到文件就是序列化,反正,從文件的字節序列恢復到內存,就是反序列化

其中就有多種庫對此過程進行協助:

  • pickle庫:
    dumps 對象序列化為bytes對象
    dump 對象序列化為文件對象,就是存入文件
    loads 從bytes對象反序列化
    load 從bytes對象反序列化,從文件中讀取

    一般來說序列化多應用於網絡傳輸中,但遠程接收端,反序列化必須有對應的數據類型,否則就會報錯。隨著現在大量服務需結合網路,排拖單機,pickle這種只適合於python程序之間的協議就沒了作用。所以就需要公共協議。比如XML·json·MessagePack。

  • json庫:
    dumps json編碼
    dump json編碼並存入文件
    loads json解碼
    load json解碼,從文件讀取數據

  • MessagePack庫:
  • packb 序列化對象
    unpackb 反序列化對象
    pack 序列化對象並保存到文件對象
    unpack 反序列化對象保存到文件對象

類似於json,但更快速,輕巧。
兼容json和pickle。
最佳序列化選擇json

技術分享圖片

其實序列化即反序列化主要操作就是這兩個步驟,主要是要了解這主要概念及再實際操作中選擇出對的協議進行操作,保證事半功倍。

文件IO序列化及反序列化