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值

  • 相关阅读:
    Android 报错Android
    转:JavaWeb学习总结(一) 写得相当不错
    infer 编译代码审查命令记录
    转:infoQ 2015开发者资料下载
    转:java 进阶之路
    转:使用gradle 构建编译程序
    web开发者的博客
    转:http2基本中文翻译
    转:http2的资料与使用
    转:百度手机地图网络性能优化实践
  • 原文地址:https://www.cnblogs.com/wszxdzd/p/9445447.html
Copyright © 2011-2022 走看看