pickle,json序列化

序列化:

把對象 轉化爲 str或者bytes

反序列化:

str或者bytes轉化爲對象

picklepython所特有的序列化工具,可以序列化所有的東西包括函數,類,數據類型等,序列化後是字節或者二進制文件

json是所有語言都支持的,只支持序列化常規的數據類型,序列化後是可視化的,跟原來的內容是一樣的,可視化性更強

pickle:

dumps:序列化後直接返回字符串或者bytes(字節)

dump:序列化後寫入文件中

dumpsdump序列化同一個內容,所得出的結果是一樣的

使用方法:

        import pickle

        注:json也可以序列化和反序列化,但json面對複雜數據無法處理;

    a.

序列化到文件中:pickle.dump():使用此方法進行序列化

例:

import pickle

dict1 = {'a':1,'name':'LiuZhengwei','age':25}

f = open("test1.pkl","wb")

pickle.dump(dict1,f)

f.close()

注:此時就把字典寫入到磁盤中了

如果使用的json,則使用json.dump(dict1,f)

列表,字典等只能序列化之後才能存入文件中

從文件中反序列化:pickle.load():使用此方法進行返序列化

例:

import pickle

f = open("test1.pkl","rb")

data = pickle.load(f)

print(data)

f.close()

注:此時把dump到磁盤中的文件反序列化顯示出來

如果使用的json,則使用json.load(f)

    b.  

不序列化到文件中:pickle.dumps()

import pickle

li = ['alex',11,22,'ok','sb']

dumpsed = pickle.dumps(li)

print(dumpsed)

注:可以看到把li列表序列化成了二進制內容,不能正常查看

wKiom1h8cHLA6d9fAAAOTYuyF94585.png

不從文件中反序列化:pickle.loads()

import pickle

li = ['alex',11,22,'ok','sb']

dumpsed = pickle.dumps(li)

print(dumpsed)

loadsed = pickle.loads(dumpsed)

print(loadsed)

wKiom1h8cILynwgYAAATvL2hOUk277.png

json的序列化跟pickle一樣:

    import json

json僅僅可以序列化int,float,bool,str,list,dict,None

dumps:返回的是字符串,而pickle返回的是字節


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章