網站首頁 編程語言 正文
對象:是抽象的概念 如列表 元組 字典 集合 皆為對象
序列化:一種方法。目的:把對象存儲在磁盤上(即,將對象轉換為字節數據/字符數據)。
這一過程我們借助序列化這一方法實現。
為什么需要序列化和反序列化這一操作呢?
1.便于存儲。序列化過程將文本信息轉變為二進制數據流。信息就容易存儲在硬盤之中,當需要讀取文件的時候,從硬盤中讀取數據,然后再將其反序列化便可以得到原始的數據。在Python程序運行中得到了一些字符串、列表、字典等數據,想要長久的保存下來,方便以后使用,而不是簡單的放入內存中關機斷電就丟失數據。
2.便于傳輸。當兩個進程在進行遠程通信時,彼此可以發送各種類型的數據。無論是何種類型的數據,都會以二進制序列的形式在網絡上傳送。發送方需要把這個對象轉換為字節序列,在能在網絡上傳輸;接收方則需要把字節序列在恢復為對象。
兩個模塊實現序列化
1.pickle模塊
pickle模塊實現了基本的數據序列化和反序列化。通過pickle模塊的序列化操作我們能夠將程序中運行的對象信息保存到文件中去,永久存儲;通過pickle模塊的反序列化操作,我們能夠從文件中創建上一次程序保存的對象。
pickle模塊中的四個方法:dumps dump loads? load
#dumps將對象序列化為字節數據 >>> import pickle >>> ls = [1,2,3] >>> data = pickle.dumps(ls) >>> data b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.' >>> f=open("a.txt",mode="wb") >>> f.write(data) 22 >>> f.close() >>> f=open("a.txt",mode="rb") >>> f.read() b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.' >>> f.close() #dump將對象序列化為字節數據并且保存到file文件中 >>> ls=[2,3,4] >>> pickle.dump(ls,open("a.txt",mode="wb")) >>> f=open("a.txt",mode="rb") >>> f.read() b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x02K\x03K\x04e.' #loads將字節數據反序列化為對象 >>> f =open("a.txt","rb") >>> show = f.read() >>> show b'\x80\x04\x95\x0f\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04K\x05e.' >>> show=pickle.loads(show) >>> show [1, 2, 3, 4, 5] >>> f.close() #load將file中的字節數據反序列化為對象 >>> pickle.load(open("a.txt","rb")) [1, 2, 3, 4, 5]
2.json模塊
json模塊是將對象序列化為字符數據,json模塊一樣有dumps dump loads? load方法,注意:json模塊一般是用來序列化字典對象?
#dumps方法 >>> import json >>> d={"usename":"zhangsan","age":17} >>> json.dumps(d) '{"usename": "zhangsan", "age": 17}' >>> s=json.dumps(d) >>> f=open("a.txt","wt") >>> f.write(s) 34 >>> f.close() #loads方法 >>> f=open("a.txt","rt") >>> ss = f.read() >>> ss '{"usename": "zhangsan", "age": 17}' >>> json.loads(ss) {'usename': 'zhangsan', 'age': 17} >>> dd = json.loads(ss) >>> dd {'usename': 'zhangsan', 'age': 17} >>> f.close()
原文鏈接:https://blog.csdn.net/weixin_55739782/article/details/122589142
相關推薦
- 2022-06-16 C語言詳解鏈式隊列與循環隊列的實現_C 語言
- 2023-12-13 Excel統計某個關鍵字出現的次數
- 2022-03-11 解決 fatal error LNK1120: 1 unresolved externals 問題
- 2022-07-29 解決Vmware虛擬機安裝centos8報錯“Section?%Packages?Does?Not?
- 2022-06-12 Centos系統搭建MongoDB數據庫_MongoDB
- 2022-04-10 C#實現計算器功能_C#教程
- 2022-10-19 react創建項目啟動報錯的完美解決方法_React
- 2022-10-31 React中使用antd組件的方法_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支