序列化是指把記憶體裡的資料型別轉變成字串。以使其能儲存到硬碟或通過網路傳輸到遠端。——硬碟或網路傳輸時只能接受bytes。
python中用於序列化的兩個模組:
json和pickle模組都提供了四個功能:dumps、dump、loads、load
#把記憶體資料轉成字元,叫做序列化
data =,
]}f = open("
game_status
","w")
#f.write(data) # 寫入失敗,write只能接收字串或者是bytes
f.write(str(data)) #
內容寫入檔案中
#把字元轉成記憶體資料型別,叫做反序列化
f = open("
game_status
","r")
d =f.read()
d =eval(d)
print(d['
roles
'])
把資料型別轉成字串存到記憶體裡的意義:
1、把你的記憶體資料通過網路共享給遠端其他人
2、定義了不同語言之間的互動規則
純文字:不能共享複雜的資料型別
xml:佔空間大
json:相對來說,簡單且可讀性好。
import jsondata = ,
]}d = json.dumps(data) # 僅轉為字串,可以存入硬碟
print(d,type(d))
"""輸出:, ]} """
f = open("test.json","w") # 建立檔案物件
d1 = json.dump(data,f) # dump不僅將資料變為字串還直接寫入檔案,但是只能存入檔案物件中
d2 = json.loads(d) # 僅把字串轉為相應的資料型別
print(d2['roles'],type(d2))
"""輸出:[, ] """
# 從檔案中讀入:
f = open("test.json","r")
data = json.load(f)
print(data['roles'])
importpickle
d =
l = [1,2,3,4,'
rain']
pk = open("
data.pkl
","wb
") #
針對bytes內容必須配置為wb模式
print(pickle.dumps(d)) #
b'\x80\x03}q\x00(x\x04\x00\x.... bytes型別
pickle.dump(d,pk)
"""data.pkl檔案內容:�}q(xnameqxalexqxageqku.
檔案格式不可直接讀。
"""f = open("
data.pkl
","rb")
d =pickle.load(f)
(d)"""
輸出:"""
defsayhi():
print('
dddddd')
pickle.dumps(sayhi)
"""執行不報錯,說明pickle可以支援函式序列化
"""
json:
優點:跨語言、體積小
缺點:只能支援int\str\list\tuple\dict
pickle:
優點:專為python設計,支援python所有的資料型別。
缺點:只能在python中使用,儲存資料佔空間大。
json pickle資料序列化
json pickle資料序列化json 用於字串和python資料型別間進行轉換 pickle 用於python特有的型別 和 python的資料型別間進行轉換 序列化 把字典或者字串的記憶體物件 存到硬碟上 反序列化 就是從硬碟上載入出來序列化 把字典或者字串的記憶體物件 存到硬碟上 impor...
json pickle資料序列化
json pickle資料序列化json 用於字串和python資料型別間進行轉換 pickle 用於python特有的型別 和 python的資料型別間進行轉換 序列化 把字典或者字串的記憶體物件 存到硬碟上 反序列化 就是從硬碟上載入出來序列化 把字典或者字串的記憶體物件 存到硬碟上 impor...
json pickle資料序列化
json模組提供了四個功能 dumps dump loads load pickle模組提供了四個功能 dumps dump loads load 原則上,dump一次,load一次,想dump多次就寫入多個檔案 import pickle data pickle.dumps 將資料通過特殊的形式轉...