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值

  • 相关阅读:
    window 配置 sendmail
    无限级分类
    sublime
    php笔记
    Python:开发_基本流程
    python学习笔记,视频day13-python基础知识练习题(二)
    python学习笔记,视频day12-列表、元组、字典+整理
    java学习笔记- Math类、String类
    java学习笔记-if语句、Switch语句
    java学习笔记-循环
  • 原文地址:https://www.cnblogs.com/wszxdzd/p/9445447.html
Copyright © 2011-2022 走看看