python 笔记 pickle json
1? 數(shù)據(jù)序列化
????????文件系統(tǒng),機(jī)器學(xué)習(xí),大數(shù)據(jù)等,都少不了數(shù)據(jù)文件。Python 提供了一些比較方便序列化的存儲(chǔ)的組件。
???????? 什么是序列化(Serialization)呢,就是把像字典,列表這類的數(shù)據(jù),打包保存在電腦硬盤中。
2 pickle
2.1 序列化成一串字節(jié)
import pickledata = ['Shanghai','浦東新區(qū)','20211206'] pickle.dumps(data) ''' b'\x80\x03]q\x00(X\x08\x00\x00\x00Shanghaiq\x01X\x0c\x00\x00\x00\xe6\xb5\xa6\xe4\xb8\x9c\xe6\x96\xb0\xe5\x8c\xbaq\x02X\x08\x00\x00\x0020211206q\x03e.' '''????????可以看到這個(gè)字典被 pickle 以后,已經(jīng)面目全非,你不能直接讀出來里面的信息,因?yàn)檫@些信息已經(jīng)被編碼了。
????????所以當(dāng)你在用 pickle 進(jìn)行序列化的時(shí)候,需要考慮你需不需要能看懂被打包的數(shù)據(jù),如果沒有這個(gè)需求,那你就可以用 pickle。有的話,建議使用后面將要涉及的json。
2.2 序列化成一個(gè)文件
import pickledata = ['Shanghai','浦東新區(qū)','20211206'] f=open('data.pkl','wb') pickle.dump(data,f) f.close()?注意這里一定要是'wb‘,如果是'w'的話,會(huì)報(bào)如下的錯(cuò)誤:
TypeError: write() argument must be str, not bytes但是這個(gè)data.pkl的文件,人是沒法直接看懂的:
?2.3 反序列化文件
f1=open('data.pkl','rb') data=pickle.load(f1) data ''' ['Shanghai', '浦東新區(qū)', '20211206'] '''''' 對(duì)比一下直接read: '''f=open('data.pkl','rb') f.read() ''' b'\x80\x03]q\x00(X\x08\x00\x00\x00Shanghaiq\x01X\x0c\x00\x00\x00\xe6\xb5\xa6\xe4\xb8\x9c\xe6\x96\xb0\xe5\x8c\xbaq\x02X\x08\x00\x00\x0020211206q\x03e.' '''3 json
Python 中的 json 庫,就是來處理 json 形式的數(shù)據(jù)的。
一般來說,Python 里的字典,列表都可以是 json 數(shù)據(jù)格式。
3.1 用json 序列化
import jsondata = ['Shanghai','浦東新區(qū)','20211206'] j = json.dumps(data)print(j) print(type(j))''' ["Shanghai", "\u6d66\u4e1c\u65b0\u533a", "20211206"] <class 'str'> '''相比于pickle,json序列化之后的內(nèi)容是可讀的,變成了一個(gè)字符串形式的列表
3.2 序列化至文件
大體用法和pickle一致
import jsondata = ['Shanghai','浦東新區(qū)','20211206']f=open('data.json','w') json.dump(data,f) f.close()相比于pickle,內(nèi)容是可讀的?
3.3 反序列化文件
大體用法和pickle一致
f=open('data.json','r') json.load(f) ''' ['Shanghai', '浦東新區(qū)', '20211206'] '''''' 對(duì)比一下read ''' f=open('data.json','r') f.read() ''' '["Shanghai", "\\u6d66\\u4e1c\\u65b0\\u533a", "20211206"]' '''4 pickle和json的比較
?5 其他序列化
numpy? 有專門的 npz格式文件,見:
python包介紹:numpy_UQI-LIUWJ的博客-CSDN博客? 第五小節(jié)
總結(jié)
以上是生活随笔為你收集整理的python 笔记 pickle json的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文笔记:N-BEATS: NEURAL
- 下一篇: python 笔记 异常处理