那麼為什麼需要序列化和反序列化這一操作呢?
便於儲存。序列化過程將文字資訊轉變為二進位制資料流。這樣就資訊就容易儲存在硬碟之中,當需要讀取檔案的時候,從硬碟中讀取資料,然後再將其反序列化便可以得到原始的資料。在python程式執行中得到了一些字串、列表、字典等資料,想要長久的儲存下來,方便以後使用,而不是簡單的放入記憶體中關機斷電就丟失資料。python模組大全中的pickle模組就派上用場了,它可以將物件轉換為一種可以傳輸或儲存的格式。
注意:只能在python中使用,只支援python的基本資料型別。
可以處理複雜的序列化語法。(例如自定義的類的方法,遊戲的存檔等)
序列化的時候,是序列化了整個序列物件,而不是記憶體位址。
1.儲存bytes形式
dumps()
把任意物件序列化成乙個
bytes
,然後,就可以把這個
bytes
寫入檔案,或者通過網路傳輸。
import pickle
d = dict(name='bob', age=20, score=88)
bts=pickle.dumps(d)
print type(bts)# 輸出:#載入方式,讀取bytes
bj2 = pickle.loads(bts)
print type(obj2)# 輸出:print obj2# 輸出:d
2.檔案形式,dump,load
直接把物件序列化後寫入乙個file-like object:
f = open('dump.txt', 'wb')
pickle.dump(d, f)
f.close()
f = open('dump.txt', 'rb')
d = pickle.load(f)
f.close()
#d
python pickle序列化儲存
序列化儲存 序列化物件可以在磁碟上儲存物件,並在需要的時候讀取出來。任何物件都可以執行序列化操作,字典物件也不例外。def storetree inputtree,filename import pickle fw open filename,w pickle.dump inputtree,fw f...
python pickle序列化儲存
在程式執行過程中所有的變數都是存在記憶體中,一旦程式關閉或者電腦關機,記憶體中的所有資料都會丟失。為了能夠繼續使用,我們需要將資料存放在硬碟裡。我們把變數從記憶體中變成可儲存或傳輸的過程稱之為序列化,在python中叫pickling,在其他語言中也被稱之為serialization,marshal...
redis持久化 AOF持久化
1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...