序列化及json pickle的使用

2022-05-02 19:48:15 字數 1869 閱讀 9993

序列化是指把記憶體裡的資料型別轉變成字串。以使其能儲存到硬碟或通過網路傳輸到遠端。——硬碟或網路傳輸時只能接受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 json

data = ,

]}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'])

import

pickle

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)

print

(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 將資料通過特殊的形式轉...