• 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()
  • 相关阅读:
    纯CSS3制作的“Ribbons”效果
    iOS 7.1的Safari为meta标签新增minimal-ui属性,在网页加载时隐藏地址栏与导航栏
    关于meta知多少
    mobile开发技巧
    大神给你分析HTTPS和HTTP的区别
    数据库之SQL语句分类
    pip安装第三方包失败
    django之分页
    django之发送电子邮件
    bug之needs to have a value for field "id" before this many-to-many relationship can be used.
  • 原文地址:https://www.cnblogs.com/znyyy/p/10072636.html
Copyright © 2020-2023  润新知