序列化和反序列化
程式執行的過程中,所有變數都是在記憶體中操作的,當程式一旦執行完畢,結束退出後,變數占有的記憶體就被作業系統**了。 因此我們需要將某些資料持久化儲存到磁碟中,下次執行的時候從磁碟中讀取相關資料。
我們將變數從記憶體中變成可以儲存或傳輸的過程稱之為序列化,在python中叫做pickling,在其它語言中也稱之為 serialization、marshaling、flattening等等,說的都是乙個意思。 反之,則為反序列化,稱之為unpickling,把變數內容從序列化的物件重新讀取到記憶體中。
# coding:utf-8
import pickle
"""序列化"""
d =dict
(name=
'思聰'
, age=
29, score=80)
print
(d)#
str= pickle.dumps(d)
# 呼叫pickle的dumps函式進行序列化處理
print
(str
)# b'\x80\x03}q\x00(x\x04\x00\x00\x00nameq\x01x\x06\x00\x00...
f =open
('dump.txt'
,'wb'
)# 定義和建立乙個file檔案物件,設定模式為wb
pickle.dump(d, f)
# 將內容序列化寫入到file檔案中
f.close(
)# 最後關閉掉檔案資源
"""反序列化"""
# 從之前序列化的dump.txt檔案裡邊讀取內容
f =open
('dump.txt'
,'rb'
)# 設定檔案選項模式為rb
d = pickle.load(f)
# 呼叫load做反序列處理過程c
f.close(
)# 關閉檔案資源
print
(d)#
print
('name is %s'
% d[
'name'])
# name is 思聰
同時,也許你們也會發現,這個pickle完的東西,是讓人看不懂的。只有python自己可以把它unpickle回來。
如果我們有乙個檔案現在存下來,並且日後要在其他地方用到的話,我們可以用json來做序列化。python的資料結構跟json有非常完美的相容:
"""用json實現序列和反序列化"""
import json
d1 =
dict
(name=
'小王'
, age=
20, score=80)
str= json.dumps(d1)
# 呼叫json的dumps函式進行json序列化處理
print
(str
)# 序列化可能出現編碼不一致
# 呼叫json的loads函式進行反序列化處理
d2 = json.loads(
str)
print
(d2)
#
Python 序列化和反序列化
在spark中使用廣播變數時,選擇合適的序列化格式是非常重要的。這裡重點講的是python中的序列化。1.序列化和反序列化 序列化就是把資料變成可儲存或可傳輸的過程的,只有序列化後的資料才可以寫入到磁碟或者通過網路傳輸到spark集群的其他節點上。反序列化則相反,反序列就是把序列化的變數重新轉到記憶...
python 序列化和反序列化
import json print json.all 可以列印出json的所有方法 dict1 print 初始狀態 dict1 print type dict1 將python編碼轉化為json字串 str1 json.dumps dict1,ensure ascii false print 序列...
序列化和反序列化 C 序列化與反序列化。
序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...