Python標準庫中的marshal模組
該模組包含可以以二進位制格式讀取和寫入Python值的函式。該格式是針對Python的,但獨立於機器架構問題(例如,您可以將Python值寫入PC上的檔案,將檔案傳輸到Sun,並在那裡讀取它)。使用marshal序列化的二進位制資料格式還沒有文件化,它可能會在Python版本之間發生變化(儘管很少發生)。
這不是一個通用的“永續性”模組。對於通過RPC呼叫的Python物件的一般永續性和傳輸,請參閱模組pickle和shelve。marshal模組主要用於支援讀取和編寫.pyc檔案的Python模組的“偽編譯”程式碼。因此,當需要時,Python維護人員保留在向後不相容的方式中修改編組格式的權利。如果您正在序列化和反序列化Python物件,則使用pickle模組——效能是可比較的,版本獨立性是有保證的,而pickle支援的物件範圍比marshal大得多。
並不是所有的Python物件型別都被支援;通常,只有值與特定的Python呼叫的物件無關才能被這個模組編寫和讀取。支援以下型別:布林值、整數、浮點數、複數、字串、位元組、位元組陣列、元組、列表、集合、frozenset(不可變集合)、字典和程式碼物件。單獨的None、Ellipsis和StopIteration也可以編組和解組。對於低於版本3的格式,遞迴列表、集合和字典不能編寫(見下面)。
模組中有可以讀取/寫入檔案,以及在位元組類物件上操作的函式。
marshal.dump(value, file[, version])
將值寫入到一個開啟的輸出流裡。引數value表示待序列化的值。file表示開啟的輸出流。如:以”wb”模式開啟的檔案,sys.stdout或者os.popen。對於一些不支援序列類的型別,dump方法將丟擲ValueError異常。但也會將垃圾資料寫入檔案。該物件將不能通過load()來正確讀取。
版本引數表示轉儲應該使用的資料格式(見下文)。
marshal.load(file)
從開啟的檔案中讀取值並返回它。如果沒有讀取有效的值(例如,因為資料具有不同的Python版本的不相容的編組格式),會引發EOFError、ValueError或TypeError錯誤。檔案必須是可讀的二進位制檔案。
注意,如果一個包含不支援型別的物件被編組了dump(), load()將會用None代替unmarshallable型別。
marshal.dumps(value[, version])
返回將被轉儲(值、檔案)寫入檔案的位元組物件。該值必須是受支援的型別。如果值有(或包含有)不支援型別的物件,則丟擲ValueError異常。
版本引數表示轉儲應該使用的資料格式(見下文)。
marshal.loads(bytes)
將bytes樣物件轉換為值。如果沒有找到有效值,會引發EOFError、ValueError或TypeError錯誤。輸入中的額外位元組被忽略。
marshal.version
指示模組使用的格式。版本0是歷史格式,版本1共享字串,版本2使用二進位制格式的浮點數。版本3增加了對物件例項和遞迴的支援。當前版本是4。
注:這個模組的名稱源於模組化設計人員使用的一些術語(其中包括其他一些術語),他們使用“編組”這個術語來將資料以自包含的形式傳送出去。嚴格地說,“to marshal”的意思是將一些資料從內部轉換成外部形式(例如,在RPC緩衝區中),以及反向過程的“解組”。
例子:
>>> import marshal >>> import os >>> x=[30, 5.0, [1, 2, 3], (4, 5, 6), {'a': 1, 'b': 2, 'c': 3}, {8, 9, 7}] >>> f=open(os.path.join(os.getcwd( ),'ftest.txt'),'wb') >>> marshal.dump(x,f) 102 >>> f.close() >>> f2=open(os.path.join(os.getcwd( ),'ftest.txt'),'rb') >>> y=marshal.load(f2) >>> print(list(y)) [30, 5.0, [1, 2, 3], (4, 5, 6), {'a': 1, 'b': 2, 'c': 3}, {8, 9, 7}] >>> f2.close() >>> t1=marshal.dumps(x) >>> t2=marshal.loads(t1) >>> print(list(t2)) [30, 5.0, [1, 2, 3], (4, 5, 6), {'a': 1, 'b': 2, 'c': 3}, {8, 9, 7}] >>> |
相關推薦
Python標準庫中一些模組
import re:呼叫正則表示式 提供高階字串模式匹配方案。該模組中包含的關鍵函式有: compile()--將一個RE表示式編譯成一個可重用的RE物件 match()--試圖從字串的開始匹配一個模式 search()--找出字串中所有匹配的項 sub()--進行查詢替換
Python標準庫中的marshal模組
marshal-內部的Python物件序列化 該模組包含可以以二進位制格式讀取和寫入Python值的函式。該格式是針對Python的,但獨立於機器架構問題(例如,您可以將Python值寫入PC上的檔案,將檔案傳輸到Sun,並在那裡讀取它)。使用marsh
Python標準庫中的Tkinter模組
Python自帶支援Tk的Tkinter,無需安裝任何包,就可以直接使用。Tkinter封裝了訪問Tk的介面,Tk是一個圖形庫,支援多個作業系統,使用Tcl語言開發。Tk會呼叫作業系統提供的本地GUI介面,完成最終的GUI。 先看例子: #file tkintertest.py #pyth
numpy的array與python標準庫中的list相互轉換
將list轉換成array,用np.array(<list>) 將array轉換為list,用<array>.tolist() >>> a array([[1., 2., 3.], [1., 2., 3.], [0., 0
Python標準庫(非常經典的各種模組介紹)
https://blog.csdn.net/liujinwei2005/article/details/76725422 0.1. 關於本書 0.2. 程式碼約定 0.3. 關於例子 0.4. 如何聯絡我們 核心模組 1.1. 介紹
python標準庫常用模組(一)-----------------------------time模組詳解及相關演示程式碼
要想了解time模組,我們需要首先了解一下時間的三種表現形式: 1.時間戳:當前距離1970年的秒數 2.格式化的字串:即2018年9月11日的這種表現形式 3.struct_time:元組時間,以元組的形式顯示時間,一共有九個元素 下面來介紹一下它具體的方法及示例程
python標準庫常用模組(三)-----------------------------OS模組詳解,呼叫系統的命令
OS模組是呼叫系統命令的模組,和執行cmd的命令相似。 1.獲取當前的工作目錄:getcwd() 2.改變當前指令碼的工作目錄:chdir(path) 3.返回當前目錄:curdir() 4.獲取當前目錄的父目錄:pardir() 5.若目錄為空,則刪除,遞迴到上一
python標準庫模組
06/07 20:10:08 編譯 def function(a, b): print a, b apply(function, (“whither”, “canada?”)) apply(function, (1, 2 + 3)) whither canad
Python標準庫筆記(11) — Operator模組
Operator——標準功能性操作符介面. 程式碼中使用迭代器時,有時必須要為一個簡單表示式建立函式。有些情況這些函式可以用一個lambda函式實現,但是對於某些操作,根本沒必要去寫一個新的函式。因此operator模組定義了一些函式,這些函式對應於算術、比較和其他與標準物件API對應的操作。
Python標準庫系列之Paramiko模組
Paramiko是一個Python實施SSHv2的協議,提供客戶端和伺服器的功能。雖然它利用一個Python C擴充套件低級別加密的paramiko本身就是圍繞SSH聯網概念的純Python介面。 Paramiko官網:http://www.paramiko.org/ 安裝: pip i
Python標準庫(各種模組介紹)
"We'd like to pretend that 'Fredrik' is a role, but even hundreds of volunteers couldn't possibly keep up. No, 'Fredrik' is the result of crossing an http
Python標準庫--Scope
sda1 模塊簡介你一定在很多計算機科學課程上聽說過作用域。它很重要,如果你不理解它的工作原理,那麽就會出現一些令人困惑的錯誤。作用域最基本的功能就是告訴編譯器一個變量什麽時候是可見的。也就是說,作用域定義了你使用變量的時間和範圍。當你嘗試使用一些不在當前作用域的變量時,你就會得到NameError。Pyth
Python標準庫--string模塊
err 分隔 xca provide python 變量 dog upper miss string中包含了處理文本的常量和模板 常量 print(string.whitespace) print(string.ascii_lowercase) print(string.
Python標準庫--textwrap模塊
給定 fix rip 調整 wrap 標準庫 wrapper dede 換行符 textwrap通過調整換行符的位置來格式化文本 __all__ = [‘TextWrapper‘, ‘wrap‘, ‘fill‘, ‘dedent‘, ‘indent‘, ‘shorten‘
Python標準庫--re模塊
spa 編程 斜杠 不能 當前 對象 需要 sum pri re:正則表達式 __all__ = [ "match", "fullmatch", "search", "sub", "subn", "split", "findall", "finditer"
python標準庫之【socket】
yun lock .cn 函數返回 targe ddr 是個 進程間的通信 log socket通常也稱作”套接字“。網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接的一端稱為一個socket。socket 是網絡連接端點。例如當你的W
[python標準庫]Logging模塊
post 日誌信息 tin 方式 asc dha event 如果 bytes 1.模塊簡介 logging模塊是Python內置的標準模塊,主要用於輸出運行日誌,可以設置輸出日誌的等級、日誌保存路徑、日誌文件回滾等;相比print,具備如下優點: 可以通過設置不同的
Python標準庫:內置函數all(iterable)
blog ack div class pos true pop 使用 實現 假設可叠代的對象的所有元素所有非空(或者空叠代對象),就返回True。這個函數主要用來推斷列表、元組、字典等對象是否有空元素。比方有10000個元素的列表,假設沒有提供此函數,須要使用循環來實現
Python標準庫--itertools模塊
end col map class 條件 停止 -- rtm 共享 itertools模塊:處理可叠代對象 chain()和islice()、tee() chain:合並叠代器 islice:切割叠代器,start,end,step tee:復制叠代器,新叠代器共享輸入叠
[python標準庫]Time模塊
time模塊 get ear href -c orm display http 元組 在python中,通常有以下幾種方式來表示時間: 時間戳:表示的是從1970年1月1日00:00:00開始按秒計算的偏移量。 格式化時間:struct_time元組共有9個元素共