当我们在 Python 中使用某些数据结构时(例如列表、字典等),我们可能需要序列化(将它们转换为特定格式的字符串、文件)以进行长时间存储或网络传输。 Python 中有一个内置的序列化模块 marshal
,该模块可以将实例序列化为二进制数据,也可以将二进制数据反序列化为相应的实例对象。下面是使用 marshal
模块序列化 Python 实例的完整攻略。
1. 序列化实例
1.1 marshal.dumps()
调用 marshal.dumps()
函数,可以将 Python 对象编码为二进制字符串。该函数的基本语法如下:
import marshal
data = marshal.dumps(obj)
其中,obj
是要进行序列化的 Python 对象。下面是一个示例,演示如何将一个字典对象序列化为二进制数据:
import marshal
d = {'a': [1, 2, 3], 'b': True, 'c': 'hello'}
data = marshal.dumps(d)
print(data) # 打印序列化后的二进制数据
输出:
b'\x03}\x94(\x8c\x01a\x94]\x94(K\x01K\x02K\x03e\x8c\x01b\x94\x88\x94\x8c\x01c\x94\x8c\x05hello\x94u.'
1.2 marshal.dump()
marshal.dump()
函数可以将 Python 对象序列化到文件中。该函数的基本语法如下:
import marshal
with open('filename', 'wb') as f:
marshal.dump(obj, f)
其中,filename
是要写入的文件路径,obj
是要进行序列化的 Python 对象。下面是一个示例,演示如何将一个字典对象序列化为一个文件:
import marshal
d = {'a': [1, 2, 3], 'b': True, 'c': 'hello'}
with open('data.marshal', 'wb') as f:
marshal.dump(d, f)
2. 反序列化
2.1 marshal.loads()
调用 marshal.loads()
函数,可以将二进制数据解码为 Python 对象。该函数的基本语法如下:
import marshal
obj = marshal.loads(data)
其中,data
是要进行反序列化的二进制数据。下面是一个示例,演示如何将一个二进制字符串反序列化为 Python 对象:
import marshal
data = b'\x03}\x94(\x8c\x01a\x94]\x94(K\x01K\x02K\x03e\x8c\x01b\x94\x88\x94\x8c\x01c\x94\x8c\x05hello\x94u.'
obj = marshal.loads(data)
print(obj) # 打印反序列化后的 Python 对象
输出:
{'a': [1, 2, 3], 'b': True, 'c': 'hello'}
2.2 marshal.load()
marshal.load()
函数可以从文件中读取序列化后的 Python 对象。该函数的基本语法如下:
import marshal
with open('filename', 'rb') as f:
obj = marshal.load(f)
其中,filename
是要读取的文件路径。下面是一个示例,演示如何从序列化后的文件中读取 Python 对象:
import marshal
with open('data.marshal', 'rb') as f:
obj = marshal.load(f)
print(obj) # 打印反序列化后的 Python 对象
以上就是使用 marshal
模块序列化 Python 实例的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python使用marshal模块序列化实例 - Python技术站