日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)Python教程:marshal—-內(nèi)部Python對象序列化

marshal —- 內(nèi)部 python 對象序列化


此模塊包含一此能以二進制格式來讀寫 Python 值的函數(shù)。 這種格式是 Python 專屬的,但是獨立于特定的機器架構(gòu)(即你可以在一臺 PC 上寫入某個 Python 值,將文件傳到一臺 Sun 上并在那里讀取它)。 這種格式的細節(jié)有意不帶文檔說明;它可能在不同 Python 版本中發(fā)生改變(但這種情況極少發(fā)生)。 1

從網(wǎng)站建設到定制行業(yè)解決方案,為提供成都做網(wǎng)站、網(wǎng)站制作服務體系,各種行業(yè)企業(yè)客戶提供網(wǎng)站建設解決方案,助力業(yè)務快速發(fā)展。創(chuàng)新互聯(lián)建站將不斷加快創(chuàng)新步伐,提供優(yōu)質(zhì)的建站服務。

這不是一個通用的“持久化”模塊。 對于通用的持久化以及通過 RPC 調(diào)用傳遞 Python 對象,請參閱 pickle 和 shelve 等模塊。 marshal 模塊主要是為了支持讀寫 .pyc 文件形式“偽編譯”代碼的 Python 模塊。 因此,Python 維護者保留在必要時以不向下兼容的方式修改 marshal 格式的權(quán)利。 如果你要序列化和反序列化 Python 對象,請改用 pickle 模塊 — 其執(zhí)行效率相當,版本獨立性有保證,并且 pickle 還支持比 marshal 更多樣的對象類型。

警告

marshal 模塊對于錯誤或惡意構(gòu)建的數(shù)據(jù)來說是不安全的。 永遠不要 unmarshal 來自不受信任的或未經(jīng)驗證的來源的數(shù)據(jù)。

不是所有 Python 對象類型都受支持;一般來說,此模塊只能寫入和讀取不依賴于特定 Python 調(diào)用的對象。 下列類型是受支持的:布爾值、整數(shù)、浮點數(shù)、復數(shù)、字符串、字節(jié)串、字節(jié)數(shù)組、元組、列表、集合、凍結(jié)集合、字典和代碼對象,需要了解的一點是元組、列表、集合、凍結(jié)集合和字典只在其所包含的值也是這些值時才受支持。 單例對象 None, Ellipsis and StopIteration 也可以被 marshal 和 unmarshal。 對于 version 低于 3 的格式,遞歸列表、集合和字典無法被寫入(見下文)。

有些函數(shù)可以讀/寫文件,還有些函數(shù)可以操作字節(jié)類對象。

這個模塊定義了以下函數(shù):

marshal.dump(value, file[, version])

向打開的文件寫入值。 值必須為受支持的類型。 文件必須為可寫的 binary file。

如果值具有(或所包含的對象具有)不受支持的類型,則會引發(fā) ValueError —- 但是將向文件寫入垃圾數(shù)據(jù)。 對象也將不能正確地通過 load() 重新讀取。

version 參數(shù)指明 dump 應當使用的數(shù)據(jù)格式(見下文)。

引發(fā)一個 審計事件 marshal.dumps,附帶參數(shù) value, version

marshal.load(file)

從打開的文件讀取一個值并返回。 如果讀不到有效的值(例如由于數(shù)據(jù)為不同 Python 版本的不兼容 marshal 格式),則會引發(fā) EOFError, ValueError 或 TypeError。 文件必須為可讀的 binary file。

引發(fā)一個 審計事件 marshal.load,沒有附帶參數(shù)。

備注

如果通過 dump() marshal 了一個包含不受支持類型的對象,load() 將為不可 marshal 的類型替換 None

在 3.10 版更改: 使用此調(diào)用為每個代碼對象引發(fā)一個 code.__new__ 審計事件。 現(xiàn)在它會為整個載入操作引發(fā)單個 marshal.load 事件。

marshal.dumps(value[, version])

返回將通過 dump(value, file) 被寫入一個文件的字節(jié)串對象。 值必須屬于受支持的類型。 如果值屬于(或包含的對象屬于)不受支持的類型則會引發(fā) ValueError。

version 參數(shù)指明 dumps 應當使用的數(shù)據(jù)類型(見下文)。

引發(fā)一個 審計事件 marshal.dumps,附帶參數(shù) value, version

marshal.loads(bytes)

將 bytes-like object 轉(zhuǎn)換為一個值。 如果找不到有效的值,則會引發(fā) EOFError, ValueError 或 TypeError。 輸入的額外字節(jié)串會被忽略。

引發(fā)一個 審計事件 marshal.loads,附帶參數(shù) bytes。

在 3.10 版更改: 使用此調(diào)用為每個代碼對象引發(fā)一個 code.__new__ 審計事件。 現(xiàn)在它會為整個載入操作引發(fā)單個 marshal.loads 事件。

此外,還定義了以下常量:

marshal.version

指明模塊所使用的格式。 第 0 版為歷史格式,第 1 版為共享固化的字符串,第 2 版對浮點數(shù)使用二進制格式。 第 3 版添加了對于對象實例化和遞歸的支持。 目前使用的為第 4 版。

備注

1

此模塊的名稱來源于 Modula-3 (及其他語言) 的設計者所使用的術(shù)語,他們使用術(shù)語 “marshal” 來表示以自包含的形式傳輸數(shù)據(jù)。 嚴格地說,將數(shù)據(jù)從內(nèi)部形式轉(zhuǎn)換為外部形式 (例如用于 RPC 緩沖區(qū)) 稱為 “marshal” 而其逆過程則稱為 “unmarshal”。


網(wǎng)頁名稱:創(chuàng)新互聯(lián)Python教程:marshal—-內(nèi)部Python對象序列化
轉(zhuǎn)載注明:http://www.5511xx.com/article/djjieop.html