序列化 json pickle shelve模組

2021-10-01 06:41:16 字數 1943 閱讀 1924

序列化:把乙個物件,從記憶體中變成乙個可儲存,可傳輸的過程。

json 不能序列化函式和類。json模組可以與其它程式進行介面對接。

pickle 是python專有的乙個序列化模組,可以序列化函式,但不能與其它語言進行介面。

shelve模組更靈活,只有乙個open方法。

import json

dic =

aa = json.dumps(dic)

# 序列化aa這個字典

f =open

("test"

,"w"

)f.write(aa)

f.close(

)

import json

f=open

("test"

,"r"

)data=f.read(

) data=json.loads(data)

#反序列化

print

(data[

"name"])

#列印 test 檔案裡邊 name 這個鍵值對的內容。

f.close(

)

pickle:( 不經常用,知道就行了 )

import pickle

deffoo()

:print

("ok"

)aa = pickle.dumps(foo)

f =open

("test.text"

,"wb"

)# 注意這裡,要用 wb (二進位制)模式寫入。

f.write(aa)

f.close(

)

import pickle

deffoo()

:print

("ok"

)# 由於眾檔案裡取出的函式名沒有記憶體位址,所以必須在這裡還得有乙個同樣的函式。

f=open

("test.text"

,"rb"

)data=f.read(

)data=pickle.loads(data)

data(

)

import shelve

f = shelve.

open

("test.text"

)# 它會同時建立三個檔案,不用管,用時還使用test.text檔名就可以

補充乙個知識點:

d=

print

(d["name"])

print

(d.get(

"name"))

# 在取值時d.get("name")==d["name"],但不能全盤 get方法給字典賦值。

print

(d.get(

"***"

,"mail"))

# d 裡沒有 *** 這個鍵值,預設返回 none 在後面加了 mail之後,返回 mail

序列化(序列化)

原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...

序列化(模型序列化 序列化巢狀)

from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...

序列化和解序列化

serialize 返回乙個字串,包含著可以儲存於 php 的任何值的位元組流表示。unserialize 可以用此字串來重建原始的變數值。用序列化來儲存物件可以儲存物件中的所有變數。物件中的函式不會被儲存,只有類的名稱。要能夠unserialize 乙個物件,需要定義該物件的類。也就是,如果序列化...