序列化模組

2022-05-29 18:21:08 字數 2948 閱讀 4120

什麼叫序列化——將原本的字典、列表等內容轉換成乙個字串的過程就叫做序列化。

那為什麼要序列化呢?

比如,我們在python**中寫的一段**需要c上使用,那我們怎麼給?我們能想到的方法就是存在檔案裡,然後在c上再從檔案裡讀出來。

但是我們都知道,對於檔案來說是沒有

不是所有的資料型別檔案都能夠識別的比如字典、列表等,所以我們只能將資料轉換成字典放到檔案中。

通過檔案在c上進行反序列化再從檔案裡讀出來。就可以實現不同編譯程式間資料的共用了。

序列

json模組提供了四個功能:dumps、dump、loads、load

dumps 和 loads 用於python物件和字串間的序列化和反序列化

dumps:將python 基本資料型別轉化為json格式字串

loads:將json格式資料型別轉化為python資料型別

# dic = 

# print(type(dic),dic)

# import json

# str_d =json.dumps(dic) # 序列化

# print(type(str_d),str_d)

#注意,json轉換完的字串型別的字典中的字串是由""表示的

# dic_d =json.loads(str_d) # 反序列化 #此時

要用json的loads功能處理的字串型別的字典中的字串必須由""表示

# print(type(dic_d),dic_d)

dump 和load 用於對檔案進行序列化和反序列化

dump:主要用於json檔案的讀寫,json.dump(x,f),x是物件,f是乙個檔案物件,這個方法可以將json字串寫入到文字檔案中load:進行反序列,讀取檔案。

#import json

#dic =#f=open('序列化.txt','w',encoding='utf-8')#json.dump(dic,f)#將dic序列化,並寫入f檔案 

#close

#e1 = json.load(open('

序列化.txt

','r

')) #讀取json檔案 print(

"e1的型別:

",type(e1)) print(

'e1的內容:

',e1)

pickle是python中獨有的序列化模組,所謂獨有,就是指不能和其他程式語言的序列化進行互動,因為pickle將資料物件轉化為bytes

pickle模組同樣提供了四個功能:dumps、dump、loads、load

dumps/loads將所傳入的變數的值序列化為乙個bytes型別,然後,就可以將這個bytes寫入磁碟或者進行傳輸,

再用loads方法反序列化出物件。

#

import pickle

#d=[1,2,3,4]

#print(pickle.dumps(d))

b'\x80\x03]q\x00(k\x01k\x02k\x03k\x04e.

'

>>> d=[1,2,3,4]

>>> r=pickle.dumps(d)

>>> print

(r)b

'\x80\x03]q\x00(k\x01k\x02k\x03k\x04e.

'>>>pickle.loads(r)

[1, 2, 3, 4]

dump/load則更加一步到位,在dump中可以傳入兩個引數,乙個為需要序列化的變數,另乙個為需要寫入的檔案。

再用load方法直接反序列化乙個檔案

# f=open('

file

','wb

') #用dump序列化,需要用bytes型別的wb和rb

序列化模組

模組 乙個py檔案就是乙個模組.python開發效率之高 python的模組非常多,第三方庫.模組分類 1,內建模組 登入模組,時間模組,sys模組,os模組 等等.所有的擴充套件模組 3,自定義模組.自己寫的py檔案.序列化模組.序列化 創造乙個序列.例項化 創造乙個例項 物件 將乙個字典通過網路...

序列化模組

序列化模組 把某資料型別轉化成字串型別 序列化 字串型別轉化為其他資料型別 反序列化 josn模組 只有很少一部分資料型別能通過josn轉化成字串型別 字典 列表 元組 元組會轉化成列表 import json dic str dic json.dumps dic dumps字典型別轉化成字串型別 ...

序列化模組

把物件 變數 從記憶體中變成可儲存或傳輸的過程稱為序列化 如果要在不同的程式語言之間傳遞物件,就必須把物件序列化為標準格式,如果有序列化為json表示出來的就是乙個字串,可以被所有語言讀取,也可以方便的儲存到磁碟或者通過網路傳輸 json和python內建的資料型別對應如下 json型別 pytho...