Python基礎知識之json&pickle
阿新 • • 發佈:2018-12-27
json & pickle模組
json模組:只適用於簡單的資料型別,是一種跨平臺的模組。
假設我們有了一段資料是這樣定義的:
info = { 'name':'alex', 'age':22 }
對於這種簡單的資料型別,我們可以直接使用
Json
來進行資料的序列化和反序列化:序列化
dumps
:import json f = open("test.text","wb") f.write(json.dumps(info)) f.close()
同樣的,我們可以使用
dump
方法來代替dumps
方法:
只需要將f.write(json.dumps(info))
替換成json.dump(info,f)
就可以了。反序列化
loads
:import json f = open("test.txt","rb") data = json.loads(f.read())
同樣的,我們可以使用
dump
方法來代替dumps
方法:
只需要將f.write(json.dumps(info))
替換成json.dump(info,f)
就可以了。
pickle模組:能夠轉換傳遞複雜的資料型別,是Python特有的一種資料型別。
通過上面的json模組我們發現,json只能傳遞一些簡單的資料型別,如果我們想給
info
新增一個函式呢?def
這個時候,就需要使用我們的pickle模組了。
- 序列化
dumps
:
python
import pickle
f = open("test.text","wb")
f.write(json.pickle(info))
f.close()
同樣的,我們可以使用dump
方法來代替dumps
方法:
只需要將f.write(pickle.dumps(info))
替換成pickle.dump(info,f)
反序列化
loads
:import pickle def sayhi(name): print("hi"+name) f = open("test.txt","rb") data = pickle.loads(f.read())
同樣的,我們可以使用
dump
方法來代替dumps
方法:
只需要將f.write(picklejson.dumps(info))
替換成pickle.dump(info,f)
就可以了。需要注意的是,在反序列話的時候,需要先重新定義
sayhi()
函式。
- 序列化
注意事項:
在使用json模組和pickle模組序列化和反序列化資料的時候採取的是一dump一load的原則,即只dump一份同時也只load一份。