zoukankan      html  css  js  c++  java
  • python-json&pickle序列化和反序列化

    import json
    import pickle
    

    """
    序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes(把内存数据存到硬盘上)

    序列化
    将字符串转为字节byte类型
    反序列化
    将字节byte转为字符串
    """

    json(支持dict,list,tuple,str,set,int)就是每个语言都会有的类型

    dict_msg = {'name': '小小',
                'age': 18,
                'adress': '北京市通州区幸福大街'}
    

    json序列化过程

    str_dict_msg = json.dumps(dict_msg)
    print(
        str_dict_msg)  # {"name": "u5c0fu5c0f", "age": 18, "adress": "u5317u4eacu5e02u901au5ddeu533au5e78u798fu5927u8857"}
    print(type(str_dict_msg))  # class 'str'>
    

    json反序列化过程

    dict_str_dict_msg = json.loads(str_dict_msg)
    print(dict_str_dict_msg)  # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}
    print(type(dict_str_dict_msg))  # <class 'dict'>
    

    json文件序列化(就是将看起来很像dict,list,tuple,str,set,int类型的转为str进行存储)

    # f = open('json序列化','w',encoding='utf-8')
    # json.dump(dict_msg,f)
    # f.close()
    

    json 反序列化(就是将文件中看起来很像dict,list,tuple,str,set,int类型的转为对应 的类型)

    # f = open('json序列化','r',encoding='utf-8')
    # file_json_load = json.load(f)
    # print(file_json_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'} # <class 'dict'>
    # f.close()
    

    pickle同样跟json也是这四种方法

    def sum(a, b):
        return a + b
    

    pickle序列化

    func_sum_pickle_dumps = pickle.dumps(sum)
    print(func_sum_pickle_dumps)  # b'x80x03c__main__
    sum
    qx00.'
    print(pickle.dumps(dict_msg))#b'x80x03}qx00(Xx04x00x00x00nameqx01Xx06x00x00x00xe5xb0x8fx
    

    pickle反序列化

    loads_func_sum_pickle_dumps = pickle.loads(func_sum_pickle_dumps)
    print(loads_func_sum_pickle_dumps)  # <function sum at 0x00000000027E01E0>返回的是函数sum的内存地址
    print(loads_func_sum_pickle_dumps(1, 2))  # 3
    

    pickle文件序列化

    # f = open('pickle序列化', 'wb')  # 注意pickle要用二进制方式写入,不要指定编码格式
    # pickle.dump(dict_msg, f)
    # f.close()
    

    pickle文件反序列化

    # f = open('pickle序列化', 'rb')
    # # dict_pick_load  =   pickle.load(f)
    # # print(dict_pick_load) # {'name': '小小', 'age': 18, 'adress': '北京市通州区幸福大街'}
    # # print(type(dict_pick_load)) #<class 'dict'>
    # # f.close()
    
  • 相关阅读:
    SignalR了解
    轮询、长轮询、长连接、socket连接、WebSocket
    WebSocket
    FileSaver.js 实现浏览器文件导出
    上传文件调用webapi方式
    JS离开页面 弹窗
    微信公众号开发 VS2015本地调试
    C# 微信 企业号通知消息
    nginx防止DDOS攻击配置
    如何在终端使用后台运行模式启动一个Linux应用程序
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12635151.html
Copyright © 2011-2022 走看看