本文共 1367 字,大约阅读时间需要 4 分钟。
序列化技术是将复杂的数据对象转换为简单易于存储或传输的格式的过程。这在Python中被称为pickling,在其他语言中也被称为serialization、marshalling或flattening等。序列化的过程能够有效地使对象的状态信息存储到磁盘或通过网络传输到其他机器上,而反序列化(unpickling)则是将变量内容从序列化对象中重新读取回内存。
Python提供了一个强大的模块——pickle,用于实现对象的序列化。常见的操作包括:
序列化对象并写入文件:
import pickled = dict(name="bob", age=20, scorce=88)a = pickle.dumps(d)# 输出结果为一串二进制数据print(a)
输出结果为一堆二进制数据,文件中存储了对象的完整状态。
用文件处理对象:
f = open('dump.txt', 'wb')pickle.dump(d, f)f.close()
这种方法直接将对象序列化后写入文件,效果与pickle.dumps()
相同。
反序列化对象:
import pickled = dict(name="bob", age=20, scorce=88)a = pickle.dumps(d)b = pickle.loads(a)print(b)
反序列化后,得到一个与原对象内容相同但独立的新对象。
为了在不同语言之间传输数据,一个更通用的选择是使用JSON(JavaScript Object Notation)。JSON格式不仅被所有现代语言支持,而且可以方便地存储到磁盘或通过网络传输。此外,JSON的语法简单,易于理解和实现。
JSON的数据类型与Python内置类型一一对应:
{}
对应字典(dict)[]
对应列表(list)"string"
对应字符串(str)1234.56
对应数字(int或float)true/false
对应布尔值(True/False)null
对应空值(None)Python内置的json
模块提供了将Python对象转换为JSON格式的工具:
序列化为JSON字符串:
import jsond = dict(name="bob", age=20, scorce=88)a = json.dumps(d)print(a)
输出结果为一个标准JSON字符串。
将JSON反序列化为Python对象:
import jsond = dict(name="bob", age=20, scorce=88)a = json.dumps(d)b = json.loads(a)print(b)
反序列化后,得到一个与原始对象完全相同的新字典。
使用Pickle序列化具有以下优点:
然而,使用Pickle的潜在问题包括:
对于跨语言数据传输,JSON是更优的选择,因为它是标准化格式且易于解析。
转载地址:http://fluxz.baihongyu.com/