zoukankan      html  css  js  c++  java
  • 模块 json 和 pickle

    序列化

    序列:字符串

    序列化:将其它数据类型转换成字符串的过程。

    反序列化:字符串转成其它数据类型。

    序列化的目的

    1:以某种存储形式使用自定义对象持久化。

    2:将对象从一个地方传递到另一个地方。

    3:是程序更具有维护性。

    json 和 pickle 模块

    用于序列化的两个模块

    json,用于字符串和 python 数据类型间进行转换。

    pickle,用于 python 特有的数据类型和 python 的数据类型进行转换。

    注意:pickle 仅用于 python

    • json
    # dumps 和 loads
    import json
    
    dic = {'a':1,'b':2,'c':3}
    res = json.dumps(dic) # 序列化:将一个字典转换成一个字符串
    print(res,type(res))
    # {"a": 1, "b": 2, "c": 3} <class 'str'>
    res1 = json.loads(res) # 反序列化:将一个字符串格式的字典转换成一个字典
    # 注意:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示。
    print(res1,type(res1))
    # {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
    
    # 也可处理嵌套的数据类型
    lis = [1,2,['a','b','c'],3,{'k1':'a','k2':'b','k3':'c'}]
    res = json.dumps(lis)
    print(res)
    # [1, 2, ["a", "b", "c"], 3, {"k1": "a", "k2": "b", "k3": "c"}]
    res1 = json.loads(res)
    print(res1)
    # [1, 2, ['a', 'b', 'c'], 3, {'k1': 'a', 'k2': 'b', 'k3': 'c'}]
    
    # dump 和 load
    import json
    
    dic = {'name':'zkim','age':18,'hobby':'running'}
    with open('user_info','w',encoding='utf-8')as f:
        json.dump(dic,f)
    # dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
    
    with open('user_info','r',encoding='utf-8')as f:
        res = json.load(f)
        print(res)
    # load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
    
    • pickle
    import pickle
    
    # dumps 和 loads
    dic = {'name':'zkim','hobby':'running'}
    str_dic = pickle.dumps(dic)
    print(str_dic) # 一串二进制
    
    str_dic1 = pickle.loads(str_dic)
    print(str_dic1) 
    # {'name': 'zkim', 'hobby': 'running'}
    
    
    # dump 和 load
    with open('userinfo.txt','wb')as f:
        pickle.dump(dic,f)
    with open('userinfo.txt','rb')as f:
        res = pickle.load(f)
        print(res)
    # {'name': 'zkim', 'hobby': 'running'}
    
    千里之行,始于足下。
  • 相关阅读:
    php array_flip() 删除数组重复元素——大彻大悟
    深入理解HTTP协议之POST方法——ajax实例
    RHEL/CentOS/Fedora各种源(EPEL、Remi、RPMForge、RPMFusion)配置
    SpringMVC注解校验
    Mybatis源码解析(二)
    MyBatist庖丁解牛(三)
    MyBatist庖丁解牛(二)
    linux模拟http请求命令
    清空文件内容
    git上如何删除已有项目
  • 原文地址:https://www.cnblogs.com/jincoco/p/11329636.html
Copyright © 2011-2022 走看看