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序列化可能还有差异

  • 相关阅读:
    Java核心篇,二十三种设计模式(二),结构型——适配器模式
    Java第三十七天,Mybatis框架系列,基于注解的缓存控制
    Java第三十七天,Mybatis框架系列,缓存
    Java第三十七天,Mybatis框架系列,延迟加载(基于 Collection 的实现方式)
    Java第四十五天,SpringBoot框架系列,SpringBoot基础(五)
    第十一篇 Django 【基础篇】
    第十篇 web应用&http协议
    第八篇 (2)jQuery
    第九篇 BootStrap
    第八篇 JavaScript
  • 原文地址:https://www.cnblogs.com/liyongbin/p/6845997.html
Copyright © 2011-2022 走看看