這是用于序列化的兩個(gè)模塊:
json:用于字符串和python數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換
pickle:用于python特有的類型和python的數(shù)據(jù)類型間進(jìn)行轉(zhuǎn)換
Json模塊提供了四個(gè)功能:dumps、dump、loads、load
pickle模塊提供了四個(gè)功能:dumps、dump、loads、load
pickle用法
dumps可以將數(shù)據(jù)類型轉(zhuǎn)換成序列化(只有python才認(rèn)識(shí))的字符串
>>>importpickle
>>>data={'name':'python','site':'pythontab.com'}
>>>pstr=pickle.dumps(data)
>>>printpstr
(dp0
S'name'
p1
S'python'
p2
sS'site'
p3
S'pythontab.com'
p4
s.
將數(shù)據(jù)轉(zhuǎn)換成序列化字符串,并寫入文件:
importpickle
data={'name':'python','site':'pythontab.com'}
#打開文件,然后將data寫入
withopen('dump.data','wb')asf:
pickle.dump(data,f)
#同樣讀取的時(shí)候也需要打開文件
withopen('dump.data','rb')asf:
data_load=pickle.load(f)
printdata_load
輸出結(jié)果
{'name':'python','site':'pythontab.com'}
文件中顯示的內(nèi)容與上面一致
json的用法
json的用法和pickle是一樣的
importjson
data={'name':'python','site':'pythontab.com'}
jstr=json.dumps(data)
printjstr,type(jstr)
輸出結(jié)果
{"name":"python","site":"pythontab.com"}
注意:看起來好像是個(gè)字典,但要注意了,實(shí)際上這是個(gè)字符串,因?yàn)閖son只能是字符串格式,只是看起來像字典而已。
那pickle和json有什么區(qū)別呢?
json是可以在不同語言之間交換數(shù)據(jù)的,而pickle只在python之間使用。
json只能序列化最基本的數(shù)據(jù)類型,而pickle可以序列化所有的數(shù)據(jù)類型,包括類,函數(shù)都可以序列化。
以上內(nèi)容為大家介紹了Python培訓(xùn)之序列化模塊pickle和json的使用和區(qū)別,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。