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'}
    
    千里之行,始于足下。
  • 相关阅读:
    检测数组和对象&扩展String.prototype.format 字符串拼接的功能
    10000以内unicode对照表
    手机页面加载完成后再显示(粗糙版)
    手机端网页 横竖屏翻转事件
    代替eval的方法
    跨域和非跨域 获取iframe页面高度的方法
    HDU2032 杨辉三角
    HDU2030 汉字统计
    POJ 2029 Palindromes _easy version
    POJ3468 A Simple Problem with Integers
  • 原文地址:https://www.cnblogs.com/jincoco/p/11329636.html
Copyright © 2011-2022 走看看