• Python3 从零单排9_json&pickle&shelve


      json&pickle&shelve:把内存里的数据类型转成字符串,才能够存到硬盘,或者网络传输

      json模块 跨语言/体积小 只支持 int/str/list/list/tuple/dict

      1.可以存到内存 2.将字符串网络传输给别人(网络传输必须是bytes类型) 3.跨平台/语言共享数据,定义了不同语言之间的交互规则

    import json

    data = {"a":123,"b":456} lis = [1,2,3,4,5,6,7] d1 = json.dumps(data) #将python数据类型转换为字符串: print(d1,type(d1)) d2 = json.loads(d1) #将字符串转换为python数据类型 print(d2,type(d2)) f = open("test.list","w") #打开一个文件对象,写模式 json.dump(lis,f) #将python数据类型直接以字符串形式存到文件里 json.dump(lis,f,ensure_ascii=False)#将字典写入文件为json格式,不需要用write,直接json.dump(dict_name,file_name,ensure_ascii=False)即可 # 注意ensure_ascii=False是必须要的,json.dump()默认的是ascii编码,并不认识中文,需要关闭这个ascii编码 f = open("test.list","r") #打开一个文件对象,读模式 d3 = json.load(f) #直接将文件内容以python数据类型读取 print(d3,type(d3))

      pickle模块 专为python,支持所有python数据类型(set/float/函数/类都行) 但是只能在python里用,且占体积小

    import pickle
    
    
    data = {"a":123,"b":456}
    lis = [1,2,3,4,5,6,7]
    
    f = open("data.pkl","wb")  #必须二进制打开
    pickle.dump(data,f)  #存的也是bytes类型
    f = open("data.pkl","rb")  #必须是二进制打开
    d4 = pickle.load(f)
    print(d4,type(d4))
    d6 = pickle.dumps(data)
    print(d6,type(d6))
    d7 = pickle.loads(d6)
    print(d7,type(d7))

      shelve模块  解决需要序列化多种类型的python数据,以 k,v 形式存储

    import shelve
    
    
    data = {"a":123,"b":456}
    lis = [1,2,3,4,5,6,7]
    f = shelve.open("shelve_test")
    f["data"] = data
    f["lis"] = lis
    print(f.get("data"))
    print(list(f.keys()))  #获取所有key
    print(list(f.values()))  #获取所有 value
    print(list(f.items()))  #获取所有 k,v
    f["key2"] = [1,2,"a"]  #创建一个新的kv
    print(list(f.pop("data")))  #删除一个kv
    del f["data"]  #删除一个kv
    f.clear()  #清空所有内容
    f.close()
  • 相关阅读:
    What's New in Chrome DevTools All In One
    User Timing API All In One
    Tailwind CSS All In One
    CSS 3D rotate with mouse move All In One
    Event Timing API All In One
    Long Tasks API All In One
    js get window custom global variables All In One
    Web 前端广告落地页性能监控系统 All In One
    Element Timing API All In One
    base64编码
  • 原文地址:https://www.cnblogs.com/znyyy/p/10072636.html
Copyright © 2020-2023  润新知