• Python json和pickle模块


    用于序列化的两个模块

    • json,用于字符串 和 python数据类型间进行转换
    • pickle,用于python特有的类型 和 python的数据类型间进行转换

    Json模块提供了四个功能:dumps、dump、loads、load

    pickle模块提供了四个功能:dumps、dump、loads、load

    dumps和dump函数。两个函数的唯一区别就是dump把python对象转换成json对象或pickle对象生成一个fp的文件流,而dumps则是生成了一个字符串:

    json对象或pickle对象转换成python对象的一个过程,常用的两个函数是loads和load函数。区别跟dump和dumps是一样的。

    json模块:

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

    python类型数据和JSON数据格式互相转换

    json序列化:

    import json
    dict_1 = {'a':1,'b':2}
    
    fq = open('yourapp.log','w')
    fq.write(json.dumps(dict_1))
    fq.close()

    json反序列化:

    import json
    
    with open('yourapp.log','r') as fq:
        dist_1 = json.loads(fq.read())
    print(dist_1)
    print(type(dist_1))

    pickle模块:

    与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

    pickle序列化:

    import pickle
    
    def yujian():
        return 'I wait for people, how far is she in the future?'
    
    dict_1 = {
        'name':'Angle',
        'age':'21',
        'func':yujian
    }
    
    with open('mydream','wb') as aq:
        aq.write(pickle.dumps(dict_1))

    pickle反序列化:

    import pickle
    
    def yujian():
        return 'I wait for people, how far is she in the future?'
    
    
    if __name__ == "__main__":
        with open('mydream','rb') as aq:
            dict_1 = pickle.loads(aq.read())
        print(dict_1['func'](),dict_1['name'])

    JSON和pickle模块的区别

    1、JSON只能处理基本数据类型。pickle能处理所有Python的数据类型。

    2、JSON用于各种语言之间的字符转换。pickle用于Python程序对象的持久化或者Python程序间对象网络传输,但不同版本的Python序列化可能还有差异

  • 相关阅读:
    L3-007. 天梯地图
    智能算法-遗传算法
    L2-012. 关于堆的判断
    L2-010. 排座位
    计算几何初步-三点顺序
    L3-001. 凑零钱
    靠二进制画几何[图论]
    【排序】
    欧拉路与欧拉回路
    Test on 2016/09/26
  • 原文地址:https://www.cnblogs.com/liyongbin/p/6845997.html
Copyright © 2020-2023  润新知