序列化反序列化

      網友投稿 839 2025-03-31

      1.什么是序列化和反序列化


      內存中的字典、列表、集合以及各種對象,如何保存到一個文件中?

      如果是自己定義的類的實例,如何保存到一個文件中?

      如何從文件中讀取數據,并讓它們在內存中再次變成自己對應的類的實例?

      要設計一套協議,按照某種規則,把內存中數據保存到文件中,文件是一個字節序列,所以必須把數據轉換成字節序列,輸出到文件,這就是序列化;反之,從文件的字節序列恢復到內存,就是反序列化;

      協議:類型,邊界,數據原體

      定義

      serialization 序列化

      序列化和反序列化

      將內存中的對象存儲下來,把它變成一個個字節;—>二進制

      deserialization 反序列化

      將文件中的一個個字節恢復成內存中的對象;<—二進制

      序列化保存到文件就是持久化;可以將數據序列化后持久化,或者網絡傳輸;

      也可以將從文件中或者從網絡接收到的字節序列反序列化;

      2.pickle庫

      python中的序列化、反序列化模塊;

      dumps 對象序列化為bytes對象;

      dump 對象序列化到文件對象,就是存入文件;

      loads 從bytes對象反序列化;

      load 對象反序列化,從文件讀取數據

      基本使用:

      import pickle ret = pickle.dumps(“aa”) # b’\x80\x03X\x02\x00\x00\x00aaq\x00.’ pickle.loads(ret) # aa filename = ‘./test/test.bin’ with open(filename, ‘wb’) as f: pickle.dump(99, f) pickle.dump(“aa”, f) pickle.dump([“a”, “b”, “c”], f) pickle.dump({“a”: 1, “b”: 2, “c”: 3}, f) # €Kc.€X aaq .€]q (X aqX bqX cqe.€}q (X aqKX bqKX cqKu. with open(filename, ‘rb’) as f: for i in range(4): x = pickle.load(f) print(type(x), x) # 99 # aa # [‘a’, ‘b’, ‘c’] # {‘a’: 1, ‘b’: 2, ‘c’: 3}

      python程序之間還可以都是pickle解決序列化、反序列化,如果是跨平臺、跨語言、跨協議pickle就不合適了,就需要公共的協議,如json,msgpack

      3.json庫

      輕量型的數據交換格式,完全獨立于編程語言的文本格式來儲存和表示數據

      類型: 雙引號包圍起來的任意字符,數值,無序的鍵值對組合,有序值的集合

      序列化與反序列化的過程分別叫做:encoding 和 decoding

      encoding: 把Python對象轉換成JSON字符串

      decoding: 把JSON字符串轉換成python對象

      用于實現Python數據類型與通用(json)字符串之間的轉換 dumps()、dump()、loads()、load()

      4.msgpack庫

      基于二進制高效的對象序列化庫,可用于跨語言通信

      支持多語言,兼容json,pickle

      dumps()、dump()、loads()、load()

      5.shelve庫

      shelve 專門用于將Python數據類型的數據持久化到磁盤,shelve是一個類似dict的對象,操作十分便捷 open()

      序列化應用

      一般來說,本地序列化的情況,應用較少,大多數場景都應用在網絡傳輸中;將數據序列化后通過網絡傳輸到遠程節點,遠程服務器上的服務將接收到的數據反序列化后,就可以使用了;但是要注意一點,遠程接收端,反序列化時必須有對應的數據類型,否則就會報錯;尤其時自定義類,必須遠程得有一致的定義;

      現在大多數項目,都不是單機的,也不是單服務的;需要通過網絡將數據傳送到其他節點上去,這就需要大量的序列化、反序列化的過程;但是,python程序之間還可以都是pickle解決序列化、反序列化,如果是跨平臺、跨語言、跨協議pickle就不合適了,就需要公共的協議,例如XML、Json、Protocol Buffer等;

      Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:協同協作辦公(協同辦公網)
      下一篇:給自己搭一個金融數據庫(三)
      相關文章
      亚洲国产夜色在线观看| 亚洲av无码乱码国产精品| 成人亚洲综合天堂| 亚洲色成人网站WWW永久四虎| 亚洲中文无码av永久| 久久亚洲AV成人无码电影| 亚洲an天堂an在线观看| 亚洲AV无码乱码国产麻豆穿越| 久久精品国产亚洲AV麻豆不卡| 国产V亚洲V天堂无码| 国产亚洲一区二区精品| 亚洲一区AV无码少妇电影☆| 国产亚洲精品成人AA片新蒲金 | 亚洲AV成人一区二区三区观看| 亚洲女女女同性video| 亚洲国产成人精品无码区在线秒播 | 亚洲国产成人精品久久| 亚洲成a人片在线网站| 亚洲永久中文字幕在线| 亚洲一区二区久久| 激情五月亚洲色图| 亚洲一区二区三区国产精华液| 久久久久久亚洲精品影院| 亚洲色偷偷偷综合网| 亚洲AV无码一区二区乱子仑| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲 自拍 另类小说综合图区| 亚洲狠狠爱综合影院婷婷| 超清首页国产亚洲丝袜| 亚洲成A人片在线观看WWW| 亚洲最新永久在线观看| 亚洲区精品久久一区二区三区| 国产亚洲精品成人AA片| 亚洲av成人一区二区三区观看在线| 亚洲国产精品自在拍在线播放 | 亚洲国产精品尤物YW在线观看| 亚洲中文久久精品无码ww16| 久久夜色精品国产嚕嚕亚洲av| 亚洲综合网美国十次| 中文字幕亚洲男人的天堂网络 | 亚洲av午夜国产精品无码中文字|