python序列化和反序列化

2021-09-27 16:01:27 字數 1607 閱讀 4852

序列化和反序列化

程式執行的過程中,所有變數都是在記憶體中操作的,當程式一旦執行完畢,結束退出後,變數占有的記憶體就被作業系統**了。 因此我們需要將某些資料持久化儲存到磁碟中,下次執行的時候從磁碟中讀取相關資料。

我們將變數從記憶體中變成可以儲存或傳輸的過程稱之為序列化,在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...