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()
    
  • 相关阅读:
    VS2012 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
    什么是 Cookie
    Memcached的简介和使用
    visual studio 2012打开提示 未能将网站×××配置为使用 ASP.NET 4.5 和 尚未在Web服务器上注册,您需要手动将Web服务器配置为使用ASP.NET 4.5
    SQLServer中char、varchar、nchar、nvarchar的区别:
    Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版
    C#操作sql通用类 SQLHelper
    用C#写入Excel表并保存
    C# TreeView 控件的综合使用方法
    ADODB.Connection、ADODB.RecordSet
  • 原文地址:https://www.cnblogs.com/shanshan-test/p/12635151.html
Copyright © 2011-2022 走看看