zoukankan      html  css  js  c++  java
  • 第十章、json和pickle模块

    第十章、json和pickle模块

    一、序列化

    把对象(变量)从内存中变成可存储或传输的过程称之为序列化,

    序列化优点:

    1. 持久保存状态:内存本身无法保存数据的,当运行了一段时间,我们断电或者重启程序,内存关于这个程序之前的一段时间的数据都被清空了。但是断电或者重启程序之前将程序当前的所有数据都保存在文件中了,下次运行程序的时候还能载入之前保存在文件的数据,这就是序列化。
    2. 跨平台数据交互:序列化时不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

    二、json

    json序列化

    json数据类型和python数据类型对应关系表

    Json类型 Python类型
    {} dict
    [] list
    "string" str
    520.13 int或float
    true/false True/False
    null None

    反序列化和序列化的一个过程如图

    json模块

    import json
    struct_data={"a":1,"b":2,"c":3}
    print(struct_data)
    json_data=json.dumps(struct_data)
    #{'a': 1, 'b': 2, 'c': 3}
    
    with open("json序列化.json","w") as fw:
        json.dump(struct_data,fw)
        #生成了json文件
    
    with open("json序列化.json") as fr:
        data_load=json.load(fr)
    print(data_load)#{'a': 1, 'b': 2, 'c': 3}
    #反序列化json文件
    

    三、pickle模块

    和json区别在于:pickle的可以存储Python中的所有的数据类型,包括对象,而json不可以。 pickle不能跨平台,甚至不同版本python也不能兼容

    #序列化内存中的数据
    import pickle
    struct_data={"a":1,"b":2,"c":3}
    print(struct_data)
    pickle_data=pickle.dumps(struct_data)
    print(pickle_data)
    #b'x80x03}qx00(Xx01x00x00x00aqx01Kx01Xx01x00x00x00bqx02Kx02Xx01x00x00x00cqx03Kx03u.'
    
    #反序列化内存中的数据
    pickle_data=pickle.loads(pickle_data)
    print(pickle_data)
    #{'a': 1, 'b': 2, 'c': 3}
    
    #pickle模块需要使用二进制存储,即'wb'模式存储
    #序列化数据,保存在文件中
    with open("pick序列化对象.pkl","wb") as fw:
        pickle.dump(struct_data,fw)
       #生成了pkl文件
    
    #反序列化文件中的数据
    with open('Pickle序列化对象.pkl', 'rb') as fr:
        pickle_data = pickle.load(fr)
    print(pickle_data)
    #{'a': 1, 'b': 2, 'c': 3}
    
  • 相关阅读:
    不知如何摧毁Kendo UI for jQuery小部件?这份指南不得不看
    MyEclipse导航代码第二弹,Java开发更便捷
    索引扫描与索引查找区别
    Chrome使用技巧
    什么是中台?所有的中台都是业务中台
    跨域资源共享CORS详解
    多线程之入门起步(三)
    聊天程序——基于Socket、Thread (二)
    多线程的相关概念(一)
    使用BCP实用工具导出导入数据
  • 原文地址:https://www.cnblogs.com/demiao/p/11378018.html
Copyright © 2011-2022 走看看