json,pickle等類型文件的讀寫

讀取json文件的每一行,然後json.loads將字符串轉爲字典(數據)。json.load將文件打開,並且把字符串轉爲數據類型。
json.dumps將字典(數據)轉爲字符串,然後用json.dump,將字符串寫入json文件中。

序列化和反序列化

變量從內存中變成可存儲或傳輸的過程稱之爲序列化,序列化是將對象狀態轉化爲可保存或可傳輸格式的過程。
變量內容從序列化的對象重新讀到內存裏稱之爲反序列化,反序列化是流轉換爲對象。

參考鏈接

json和pickle都可以將python的對象保存爲一個文件,打開該文件的時候可以保持對象的數據類型不變。

json和pickle的區別:
json:用於字符串和Python數據類型間進行轉換,可以跨平臺
pickle支持所有數據類型,但僅限於python中,不能跨平臺
json文件打開可以識別其中的內容,pkl文件打開是亂碼

對於json

dump 和 dumps 都實現了序列化
load 和 loads 都實現反序列化

load 和 loads的區別:
load:針對文件句柄,將json格式的字符轉換爲dict,從文件中讀取 (將string轉換爲dict)
例子:a_json = json.load(open('demo.json','r'))
loads:針對內存對象,將string轉換爲dict (將string轉換爲dict)
例子:a = json.loads('{'a':'1111','b':'2222'}')

dump 和 dumps的區別:
dump:將dict類型轉換爲json字符串格式,寫入到文件 (易存儲)
例子:a_dict = {'a':'1111','b':'2222'}
json.dump(a_dict, open('demo.json', 'w')
dumps:將dict轉換爲string (易傳輸)
a_dict = {'a':'1111','b':'2222'}
a_str = json.dumps(a_dict)
a_str is : '{"a": "1111", "b": "2222"}'

總結:

根據序列化和反序列的特性

loads: 是將string轉換爲dict
dumps: 是將dict轉換爲string
load: 是將裏json格式字符串轉化爲dict,讀取文件
dump: 是將dict類型轉換爲json格式字符串,存入文件

對於pickle
Python提供兩個模塊來實現序列化:cPickle和pickle。這兩個模塊功能是一樣的,區別在於cPickle是C語言寫的,速度快,pickle是純Python寫的,速度慢。

pickle可以存儲的類型:

所有python支持的原生類型:布爾值,整數,浮點數,複數,字符串,字節,None。
由任何原生類型組成的列表,元組,字典和集合。
函數,類,類的實例

pickle用法:

pickle.dump(obj, file, protocol=None,)  #  file需要是wb格式打開
pickle.load(file)  #  file需要是rb格式打開
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章