
- Python 資料持久化教程
- Python 資料持久化 - 首頁
- Python 資料持久化 - 簡介
- Python 資料持久化 - 檔案 API
- 使用 os 模組處理檔案
- Python 資料持久化 - 物件序列化
- Python 資料持久化 - pickle 模組
- Python 資料持久化 - marshal 模組
- Python 資料持久化 - shelve 模組
- Python 資料持久化 - dbm 包
- Python 資料持久化 - csv 模組
- Python 資料持久化 - json 模組
- Python 資料持久化 - XML 解析器
- Python 資料持久化 - plistlib 模組
- Python 資料持久化 - sqlite3 模組
- Python 資料持久化 - SQLAlchemy
- Python 資料持久化 - PyMongo 模組
- Python 資料持久化 - Cassandra 驅動程式
- 資料持久化 - ZODB
- 資料持久化 - Openpyxl 模組
- Python 資料持久化資源
- Python 資料持久化 - 快速指南
- Python 資料持久化 - 有用資源
- Python 資料持久化 - 討論
Python 資料持久化 - marshal 模組
Python 標準庫中 marshal 模組的物件序列化功能類似於 pickle 模組。但是,此模組不用於通用資料。另一方面,Python 本身使用它來進行 Python 內部物件序列化,以支援對 Python 模組的編譯版本(.pyc 檔案)的讀/寫操作。
marshal 模組使用的資料格式在不同的 Python 版本之間不相容。因此,一個版本的編譯 Python 指令碼(.pyc 檔案)很可能無法在另一個版本上執行。
與 pickle 模組一樣,marshal 模組也定義了 load() 和 dump() 函式,用於從檔案讀取和寫入 marshalled 物件。
dump()
此函式將支援的 Python 物件的位元組表示形式寫入檔案。該檔案本身應為具有寫入許可權的二進位制檔案。
load()
此函式從二進位制檔案讀取位元組資料,並將其轉換為 Python 物件。
以下示例演示瞭如何使用 dump() 和 load() 函式來處理 Python 的程式碼物件,這些程式碼物件用於儲存預編譯的 Python 模組。
該程式碼使用內建的 compile() 函式根據包含 Python 指令的源字串構建程式碼物件。
compile(source, file, mode)
file 引數應該是讀取程式碼的檔案。如果它不是從檔案讀取的,則傳遞任何任意字串。
如果源包含語句序列,則 mode 引數為 'exec';如果只有一個表示式,則為 'eval';如果包含單個互動式語句,則為 'single'。
然後使用 dump() 函式將編譯的程式碼物件儲存在 .pyc 檔案中。
import marshal script = """ a=10 b=20 print ('addition=',a+b) """ code = compile(script, "script", "exec") f=open("a.pyc","wb") marshal.dump(code, f) f.close()
要反序列化 .pyc 檔案中的物件,請使用 load() 函式。由於它返回一個程式碼物件,因此可以使用 exec()(另一個內建函式)執行它。
import marshal f=open("a.pyc","rb") data=marshal.load(f) exec (data)
廣告