zoukankan      html  css  js  c++  java
  • 序列化模块

    序列化:得到一个字符串的结果过程是序列化

    json模块

    import json
    dic={'k1':'v2','k2':'v2'}
    ret=json.dumps(dic)
    print(ret,type(ret))
    dic1=json.loads(ret)
    print(dic1,type(dic1))
    with open("json.txt","w") as f:
        json.dump(dic,f)
    
    with open('json.txt','r')as f1:
        c=json.load(f1)
    print(c)
    

    json模块的限制:

      json格式的key必须是字符串数据类型

      如果key为数字,dump之后会强转为字符串数据类型

      对元组做value的字典会把元组强转成list类型,且不支持元组做key

      可以对数据进行多次dump,但是不能load出来。

      想dunp多个数据进入文件,只能用dumps,用loads反序列化

      中文格式dumps的第二个数据为ensure_ascii=false

      set不能被dump dumps

    pickle模块

    dump的结果是bytes,dump用的f文件句柄需要以wb格式打开,load需要rb

    支持几乎所有的对象序列化

    对于对象的序列化需要这个对象的应用类存在内存中

    对于多次dump/load的操作进行了量高的处理

    import pickle
    lst=[1,2,3,4]
    dic={1:2}
    se=(1,2,3)
    with open('2.txt',mode='wb')as f:
        pickle.dump(lst,f)
        pickle.dump(dic, f)
        pickle.dump(se, f)
    
    with open('2.txt',mode='rb')as f:
        while True:
            try:
                print(pickle.load(f))
            except EOFError:
                break
    

    shelve模块

    import shelve
    f = shelve.open('shelve_demo')
    f['key'] = {'k1':(1,2,3),'k2':'v2'}
    f.close()
    
    f = shelve.open('shelve_demo')
    content = f['key']
    f.close()
    print(content)
    

      shelve模块,写定一个文件,改动比较少,读文件操作比较多

      且大部分读取都需要基于某个key值来获取某个value值

  • 相关阅读:
    在Vue构建的SPA网页里 刷新的话,显示404页面
    springboot2.x 设置404页面
    关于Typora不显示PicGo.app的问题
    DBeaver中table插入新的数据
    DBeaver修改table的column名字
    Zeal
    Android Studio 快速创建 Toast
    使用VSCode调试单个JavaScript文件
    使用maven打包普通的java项目
    在命令行界面实现彩色字符输出 -- 并且介绍和这个相关的比较好用的java类库
  • 原文地址:https://www.cnblogs.com/wszxdzd/p/9445447.html
Copyright © 2011-2022 走看看