做(zuò)自(zì)由與創造的先行(xíng)者

數(shù)據持久性 | Data Persistence marshal

Python開(kāi)發手冊

該模塊包含可(kě)以以二進制格式讀取和(hé)寫入Python值的函數(shù)。該格式是針對Python的,但(dàn)與機器體系結構問(wèn)題無關(例如(rú),您可(kě)以将Python值寫入PC上(shàng)的文件,将文件傳輸到Sun,然後再讀回到那(nà)裏)。該格式的細節是故意沒有記錄的; 它可(kě)能(néng)會在Python版本之間(jiān)改變(盡管它很(hěn)少(shǎo))。[1]

這(zhè)不是一(yī)個通(tōng)用的“持久性”模塊。對于通(tōng)過RPC調用的Python對象的一(yī)般持久性和(hé)傳輸,請(qǐng)參閱模塊pickle和(hé)shelve。該marshal模塊主要(yào)用于支持讀取和(hé)編寫.pyc文件的Python模塊的“僞編譯”代碼。因此,如(rú)果需要(yào),Python維護者保留修改編組格式的權利,這(zhè)些編碼格式采用後向不兼容的方式。如(rú)果你正在序列化和(hé)反序列化Python對象,可(kě)以使用pickle模塊 - 性能(néng)可(kě)比,版本獨立性得到保證,并且pickle支持比marshal更廣泛的對象。

警告

該marshal模塊并非旨在防止錯誤或惡意構建的數(shù)據。切勿解組從(cóng)不受信任或未經身份驗證的源收到的數(shù)據。

并非所有的Python對象都(dōu)支持; 一(yī)般來說,隻有對象的值獨立于特定的Python調用才能(néng)被該模塊寫入和(hé)讀取。支持以下(xià)類型:布爾值,整數(shù),長(cháng)整數(shù),浮點數(shù),複數(shù),字符串,Unicode對象,元組,列表,集合,frozensets,字典和(hé)代碼對象,其中應該理解元組,列表,集合frozensets和(hé)詞典隻有在其中包含的價值本身得到支持的情況下(xià)才受到支持; 并且遞歸列表,集合和(hé)字典不應該被寫入(它們将導緻無限循環)。在單身None,Ellipsis并且StopIteration還可(kě)以編組和(hé)解組。

警告

在C long int類型超過32位的機器上(shàng)(例如(rú)DEC Alpha),可(kě)以創建比32位更長(cháng)的純Python整數(shù)。如(rú)果在C long int類型隻有32位的機器上(shàng)将這(zhè)樣一(yī)個整數(shù)編組并讀回,則會返回一(yī)個Python長(cháng)整型對象。雖然類型不同,但(dàn)數(shù)值相同。(這(zhè)種行(xíng)為(wèi)在Python 2.2中是新的,在早期版本中,除了(le)最不重要(yào)的32位數(shù)據都(dōu)丢失了(le),并且打印了(le)警告消息。)

有讀取/寫入文件的功能(néng)以及對字符串進行(xíng)操作(zuò)的功能(néng)。

該模塊定義了(le)這(zhè)些功能(néng):

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

在打開(kāi)的文件上(shàng)寫入值。該值必須是受支持的類型。該文件必須是打開(kāi)的文件對象,例如(rú)sys.stdout或由open()或返回os.popen()。它可(kě)能(néng)不是Windows上(shàng)的TemporaryFile等封裝器。它必須以二進制模式('wb'或'w+b')打開(kāi)。

如(rú)果該值具有(或包含具有)不受支持類型的對象,ValueError則會引發異常 - 但(dàn)垃圾數(shù)據也會寫入該文件。該對象不會被正确地(dì)讀回load()。

版本2.4中的新增功能(néng):version參數(shù)指示dump應使用的數(shù)據格式(請(qǐng)參見(jiàn)下(xià)文)。

marshal.load(file)

從(cóng)打開(kāi)的文件中讀取一(yī)個值并返回。如(rú)果沒有有效的讀取值(例如(rú),因為(wèi)數(shù)據有不同的Python版本的不兼容元帥格式),提高EOFError,ValueError或TypeError。該文件必須是以二進制模式('rb'或'r+b')打開(kāi)的打開(kāi)的文件對象。

注釋

如(rú)果包含不受支持的類型的對象被編組dump(),load()将替代None解組類型。

marshal.dumps(value[, version])

返回将被寫入文件的字符串dump(value, file)。該值必須是受支持的類型。養ValueError異常,如(rú)果值具有(或包含具有的對象)不支持的類型。

版本2.4中的新增功能(néng):version參數(shù)指示dumps應使用的數(shù)據格式(請(qǐng)參見(jiàn)下(xià)文)。

marshal.loads(string)

将字符串轉換為(wèi)值。如(rú)果沒有找到有效的價值,提高EOFError,ValueError或TypeError。字符串中的額外(wài)字符将被忽略。

另外(wài),定義了(le)以下(xià)常量:

marshal.version

指示模塊使用的格式。版本0是曆史版本,版本1(在Python 2.4中添加)共享實際字符串,版本2(在Python 2.5中添加)使用二進制格式作(zuò)為(wèi)浮點數(shù)。當前版本是2。

2.4版本中的新功能(néng)。

網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發