• 序列化模块


    一.序列化模块

    序列化 : 字符串 bytes
    序列 : 列表 元组 字符串 bytes

    把其他的数据类型 转换成 字符串 bytes 序列化的过程

    json

    复制代码
    import json
    dic = {'k1':'v1','k2':'v2','k3':'v3'}
    str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
    print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
    #注意,json转换完的字符串类型的字典中的字符串是由""表示的
    
    dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
    #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
    print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
    
    
    list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
    str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 
    print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
    list_dic2 = json.loads(str_dic)
    print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
    
    loads和dumps
    复制代码

      load和dump

    复制代码
    import json
    f = open('json_file','w')
    dic = {'k1':'v1','k2':'v2','k3':'v3'}
    json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
    f.close()
    
    f = open('json_file')
    dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
    f.close()
    print(type(dic2),dic2)
    复制代码

    json 在所有的语言之间都通用 : json序列化的数据 在python上序列化了 那在java中也可以反序列化
    能够处理的数据类型是非常有限的 : 字符串 列表 字典 数字
    字典中的key只能是字符串

     向文件中记录字典
    import json
    dic = {'key' : 'value','key2' : 'value2'}
    ret = json.dumps(dic)  # 序列化
    with open('json_file','a') as f:
        f.write(ret)

    从文件中读取字典

    import json
    with open('json_file','r') as f:
        str_dic = f.read()
    dic = json.loads(str_dic)
    print(dic.keys())

    dump load 是直接操作文件的

    复制代码
    import json
    dic = {'key1' : 'value1','key2' : 'value2'}
    with open('json_file','a') as f:
        json.dump(dic,f)
    with open('json_file','r') as f:
        dic = json.load(f)
    print(dic.keys())
    复制代码

    把一个一个的字典放到文件中,再一个一个取出来

    复制代码
    import json
    dic = {'key1' : 'value1','key2' : 'value2'}
    with open('json_file','a') as f:
        str_dic = json.dumps(dic)
        f.write(str_dic+'
    ')
        str_dic = json.dumps(dic)
        f.write(str_dic + '
    ')
        str_dic = json.dumps(dic)
        f.write(str_dic + '
    ')

    with open('json_file','r') as f: for line in f: dic = json.loads(line.strip()) print(dic.keys())
    复制代码

    json
    dumps loads
    在内存中做数据转换 :
    dumps 数据类型 转成 字符串 序列化
    loads 字符串 转成 数据类型 反序列化
    dump load
    直接将数据类型写入文件,直接从文件中读出数据类型
    dump 数据类型 写入 文件 序列化
    load 文件 读出 数据类型 反序列化
    json是所有语言都通用的一种序列化格式
    只支持 列表 字典 字符串 数字
    字典的key必须是字符串

    json的格式化输出 
    import json
    data = {'username':['李华','二愣子'],'sex':'male','age':16}
    json_dic2 = json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False)
    print(json_dic2)

      pickle

    1. 支持在python中几乎所有的数据类型

    import pickle
    dic = {(1,2,3):{'a','b'},1:'abc'}
    ret = pickle.dumps(dic)
    print(ret)

    2. dumps 序列化的结果只能是字节

     print(pickle.loads(ret))

    3.只能在python中使用
    4.在和文件操作的时候,需要用rb wb的模式打开文件
    5.可以多次dump 和 多次load

  • 相关阅读:
    【转】mxGraph教程-开发入门指南
    利用IPC通道进行进程间通信(C#)
    C++引用指针 & 构造函数
    MySQL配置主主及主从备份
    MySQL 主从热备份(读写分离)
    SqlServer双机热备技术实践笔记
    c#中的弱引用:WeakReference
    px、em、rem、%、vw、vh、vm这些单位的区别
    深浅clone
    JavaScript-原始值和引用值
  • 原文地址:https://www.cnblogs.com/RootEvils/p/9513750.html
Copyright © 2020-2023  润新知