- 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)
广告