zoukankan      html  css  js  c++  java
  • 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序列化可能还有差异

  • 相关阅读:
    禅道admin忘记密码
    redis conf 解析
    MySQL 安装
    Centos7上安装docker (抄)
    Linux查看CPU和内存使用情况 抄
    上传图片到阿里云OSS和获取上传图片的外网url的步骤
    docker mysql
    Oracle 11g,exp导出时空表、少表的解决办法
    使用com.aspose.words将word模板转为PDF乱码解决方案
    oracle数据库,检索出某几个字段不唯一的那些数据
  • 原文地址:https://www.cnblogs.com/liyongbin/p/6845997.html
Copyright © 2011-2022 走看看