博客
关于我
python中的序列化
阅读量:586 次
发布时间:2019-03-12

本文共 1367 字,大约阅读时间需要 4 分钟。

序列化技术是将复杂的数据对象转换为简单易于存储或传输的格式的过程。这在Python中被称为pickling,在其他语言中也被称为serialization、marshalling或flattening等。序列化的过程能够有效地使对象的状态信息存储到磁盘或通过网络传输到其他机器上,而反序列化(unpickling)则是将变量内容从序列化对象中重新读取回内存。

Python中的Pickle

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序列化

    为了在不同语言之间传输数据,一个更通用的选择是使用JSON(JavaScript Object Notation)。JSON格式不仅被所有现代语言支持,而且可以方便地存储到磁盘或通过网络传输。此外,JSON的语法简单,易于理解和实现。

    JSON的数据类型与Python内置类型一一对应:

    • {} 对应字典(dict)
    • [] 对应列表(list)
    • "string" 对应字符串(str)
    • 1234.56 对应数字(int或float)
    • true/false 对应布尔值(True/False)
    • null 对应空值(None)

    如何使用JSON

    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序列化具有以下优点:

    • 灵活性: 支持大多数Python对象,甚至自定义类
    • 高效性: 加密性强,适用于敏感数据
    • 简化操作: 只需几行代码即可完成整个流程

    然而,使用Pickle的潜在问题包括:

    • 只适用于Python环境
    • 不同Python版本间的不兼容性
    • 反序列化后与原始对象是完全独立的对象

    对于跨语言数据传输,JSON是更优的选择,因为它是标准化格式且易于解析。

    转载地址:http://fluxz.baihongyu.com/

    你可能感兴趣的文章
    OSPF多区域
    查看>>
    Grafana导入 Promethus node模板
    查看>>
    如何提高SQL查询的效率?
    查看>>
    Docker入门之-镜像(二)
    查看>>
    数据结构——链表(3)
    查看>>
    socket模块和粘包现象
    查看>>
    Python学习--模块
    查看>>
    去了解拉绳位移编码器的影响因素
    查看>>
    影响拉线位移传感器精度的原因有哪些?
    查看>>
    无法初始化Winsock2.2处理
    查看>>
    Horizon Cloud之UAG访问异常
    查看>>
    vm无法打开电源
    查看>>
    vMotion 操作失败进度卡在14% ,报错: Operation Timed out
    查看>>
    重置UAG Application admin密码
    查看>>
    Horizon Daas租户管理平台扩展分配时报:内部错误
    查看>>
    vcenter访问报503错误处理
    查看>>
    项目计划甘特图绘制说明
    查看>>
    09.QT应用程序启动外部exe文件
    查看>>
    1009. clion调试段错误
    查看>>
    C/C++:线性表之顺序表
    查看>>