• python基础学习17----json&pickle&shelve


    json和pickle的功能是对数据进行序列化

    将对象转换为可通过网络传输或可以存储到本地磁盘的数据格式(如:XML、JSON或特定格式的字节串)的过程称为序列化;反之,则称为反序列化

    json模块

    对于Python内置的数据类型(如:str, unicode, int, float, bool, None, list, tuple, dict)json模块可以直接进行序列化/反序列化处理

    dumps和loads

    import json
    list1=[1,2,3,"hello world"]
    data1=json.dumps(list1)
    print(data1)#[1, 2, 3, "hello world"]
    dict1={"one":1,"two":2,"three":3}
    data2=json.dumps(dict1)
    print(dict1)#{'one': 1, 'two': 2, 'three': 3}
    
    data1=json.loads(data1)
    print(data1)#[1, 2, 3, 'hello world']
    data2=json.loads(data2)
    print(data2)#{'one': 1, 'two': 2, 'three': 3}
    print(data2["one"])#1
    

    dump和load

    这两种方法可将序列化的数据存到文本和读取文本中序列化的数据

    list1=[1,2,3,"hello world"]
    with open("listfile","w") as f1:
        json.dump(list1,f1)
    
    with open("listfile","r") as f2:
        data=json.load(f2)
    print(data)
    

    pickle模块 

    python的pickle模块实现了python的所有数据序列和反序列化。基本上功能使用和JSON模块没有太大区别,方法也同样是dumps/dump和loads/load。

    与JSON不同的是pickle不是用于多种语言间的数据传输,它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型。

    import pickle
    class people:
        def __init__(self,name,age):
            self.name=name
            self.age=age
    
    sfencs=people("sfencs",19)
    data=pickle.dumps(sfencs)
    print(data)
    #b'x80x03c__main__ people qx00)x81qx01}qx02(Xx04x00x00x00nameqx03Xx06x00x00x00sfencsqx04Xx03x00x00x00ageqx05Kx13ub.' data=pickle.loads(data) print(data)#<__main__.people object at 0x0000029D8402DDA0>

    pickle和json同样支持dump,load,dumps,loads方法

    shelve模块

    shelve是一个简单的数据存储方案,类似key-value数据库,可以很方便的保存python对象,其内部是通过pickle协议来实现数据序列化

    其中key必须是字符串

    import shelve
    
    with shelve.open("shelvefile") as f:
        f["one"]=1
        f["two"]=2
    #这里直接保存到了文件中,生成了3个文件shelvefile.bak,shelvefile.dat,shelvefile.dir
    
    with shelve.open('shelvefile') as f:#只使用shelvefile名字即可
        print(f["one"])#1
        for key,value in f.items():
            print(key, ': ', value)
            #one :  1
            #two :  2
    

      

    参考:https://www.cnblogs.com/yyds/p/6563608.html

  • 相关阅读:
    html+php超大视频上传功能
    html+php超大视频上传教程
    html+php超大视频上传方案
    html+php超大视频上传技术
    html+php超大视频上传实例解析
    html+php超大视频上传示例
    html+php超大视频上传实例
    矩阵求导
    概率密度
    概率分布函数
  • 原文地址:https://www.cnblogs.com/sfencs-hcy/p/9689161.html
Copyright © 2020-2023  润新知