在Python中marshal物件序列化的相關知識

2022-10-04 22:30:44 字數 1731 閱讀 7939

有時候,要把記憶體中的乙個物件持久化儲存到磁碟上,或者序列化成二進位制流通過網路傳送到遠端主機上。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 的例項後,我們可以給該例項 繫結任何屬性和方法,這就是動...