有時候,要把記憶體中的乙個物件持久化儲存到磁碟上,或者序列化成二進位制流通過網路傳送到遠端主機上。python中有很多模組提供了序列化與反序列化的功能,如:marshal, pickle, cpickle等等。今天就講講marshal模組。
下面是marshal模組中定義的一些與序列化/反序列化有關的函式:
marshal.dump(value, file[, version])
將值寫入到乙個開啟的輸出流裡。引數value表示待序列化的值。file表示開啟的輸出流。如:以」wb」模式開啟的檔案,sys.stdout或者os.popen。對於一些不支援序列類的型別,dump方法將丟擲valueerror異常。要特別說明一下,並不是所有型別的物件都可以使用marshal模組來序列化/反序列化的。在python2.6中,支援的型別包括:none, integers, long integers, floating point numbers, strings, unicode objects, tuple, list, set, dict, 和 code objects。對於tuple, list, set, dict等集合物件,其中的元素必須也是上述型別之一。
marshal.load(file)
執行與marshal.dump相反的操作,將二進位制資料反串行為python物件。下面是乙個例子,演示這兩個方法的使用:
# coding=gbk
import marshal , sys , os
lst = [ 1 , ( 2 , " string " ) , ]
# 序列化到檔案中
fle = open ( os . path . join ( os . getcwd ( ) , ' fle . txt ' ) , ' wb ' )
marshal . dump ( lst , fle )
fle . close ( )
# 反序列化
fle1 = open ( os . path . join ( os . getcwd ( ) , ' fle . txt ' ) , ' rb ' )
lst1 = marshal .mhvbmnummd load ( fle1 )
fle1 . close ( )
# 列印結果
print lst
print lst1
# ---- 結果 ----
# [1, (2, 'string'), ]
# [1, (2, 'string'), ]
marshamhvbmnummdl.dumps(value[, version)
該方法與上面講的marshal.dump()功能類似,只是它返回的是序列化之後的二進位製流,而不是將這些資料直接寫入到檔案中。
marsahl.load(string)
將二進位製流反序列化為物件。下面的一段**,演示這兩個方法的使用:
import marshal , sys , os
lst = [ 1 , ( 2 , " string " ) , ]
byt1 = marshal . dumps ( lst )
lst1 = marshal . loads ( byt1 )
# 列印結果
print lst
print lst1
# —- 結果 —-
# [1, (2, 'string'), ]
# [1, (2, 'string'), ]
python日記 使用蒙版marshal
蒙版顧名思義,就是把一些東西遮蓋掉 如果中間有中文的話 包括注釋 一定要在檔案的最頂部新增 coding utf 8 首先在頭部新增 import json from flask.ext.restful import fields,marshal 首先給出一組資料,如 data 然後設定過濾規則 名...
python中否定for 在python中否定函式
有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...
在python中的用法 在Python中使用
這篇文章主要介紹了在 python 中使用 slots 方法的詳細教程 slots 方法是python 的乙個重要內建類方法 基於 python2.x 版本需要的朋友可以參考下 正常情況下,當我們定義了乙個 class 建立了乙個 class 的例項後,我們可以給該例項 繫結任何屬性和方法,這就是動...