<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在日常開發中,對資料進行序列化和反序列化是常見的資料操作,Python提供了兩個模組方便開發者實現資料的序列化操作,即 json 模組和 pickle 模組。這兩個模組主要區別如下:
Json 是一種輕量級的資料交換格式,由於其具有傳輸資料量小、資料格式易解析等特點,它被廣泛應用於各系統之間的互動操作,作為一種資料格式傳遞資料。它包含多個常用函數,具體如下:
dumps()函數可以將 Python 物件編碼成 Json 字串。例如:
#字典轉成json字串 加上ensure_ascii=False以後,可以識別中文, indent=4是間隔4個空格顯示 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{ 'sex':'女','addr':'上海', 'age':24},} print(json.dumps(d,ensure_ascii=False,indent=4)) #執行結果: { "小明": { "sex": "男", "addr": "上海", "age": 26 }, "小紅": { "sex": "女", "addr": "上海", "age": 24 } }
dump()函數可以將 Python物件編碼成 json 字串,自動寫入到檔案中,不需要再單獨寫檔案。例如:
#字典轉成json字串,不需要寫檔案,自動轉成的json字串寫入到‘users.json'的檔案中 import json d={'小明':{'sex':'男','addr':'上海','age':26},'小紅':{ 'sex':'女','addr':'上海', 'age':24},} #開啟一個名字為‘users.json'的空檔案 fw =open('users.json','w',encoding='utf-8') json.dump(d,fw,ensure_ascii=False,indent=4)
loads()函數可以將 json 字串轉換成 Python 的資料型別。例如:
#這是users.json檔案中的內容 { "小明":{ "sex":"男", "addr":"上海", "age":26 }, "小紅":{ "sex":"女", "addr":"上海", "age":24 } } #!/usr/bin/python3 #把json串變成python的資料型別 import json #開啟‘users.json'的json檔案 f =open('users.json','r',encoding='utf-8') #讀檔案 res=f.read() print(json.loads(res)) #執行結果: {'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小紅': {'sex': '女', 'addr': '上海', 'age': 24}}
load()跟loads()功能相似,load()函數可以將 json 字串轉換成 Python 資料型別,不同的是前者的引數是一個檔案物件,不需要再單獨讀此檔案。例如:
#把json串變成python的資料型別:字典,傳一個檔案物件,不需要再單獨讀檔案 import json #開啟檔案 f =open('users.json','r',encoding='utf-8') print(json.load(f)) #執行結果: {'小明': {'sex': '男', 'addr': '上海', 'age': 26}, '小紅': {'sex': '女', 'addr': '上海', 'age': 24}}
Pickle 模組與 Json 模組功能相似,也包含四個函數,即 dump()、dumps()、loads() 和 load(),它們的主要區別如下:
dumps 和 dump 的區別在於前者是將物件序列化,而後者是將物件序列化並儲存到檔案中。
loads 和 load 的區別在於前者是將序列化的字串反序列化,而後者是將序列化的字串從檔案讀取並反序列化。
dumps()函數可以將資料通過特殊的形式轉換為只有python語言認識的字串,例如:
import pickle # dumps功能 import pickle data = ['A', 'B', 'C','D'] print(pickle.dumps(data)) b'x80x03]qx00(Xx01x00x00x00Aqx01Xx01x00x00x00Bqx02Xx01x00x00x00Cqx03Xx01x00x00x00Dqx04e.'
dump()函數可以將資料通過特殊的形式轉換為只有python語言認識的字串,並寫入檔案。例如:
# dump功能 with open('test.txt', 'wb') as f: pickle.dump(data, f) print('寫入成功') 寫入成功
loads()函數可以將pickle資料轉換為python的資料結構。例如:
# loads功能 msg = pickle.loads(datastr) print(msg) ['A', 'B', 'C', 'D']
load()函數可以從資料檔案中讀取資料,並轉換為python的資料結構。例如:
# load功能 with open('test.txt', 'rb') as f: data = pickle.load(f) print(data) ['A', 'B', 'C', 'D']
本節給大家介紹 Python 中 json&pickle 模組的常用操作,對於實現資料的序列化和反序列化提供了支撐。
到此這篇關於Python實現資料的序列化操作詳解的文章就介紹到這了,更多相關Python資料序列化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45