zoukankan      html  css  js  c++  java
  • 序列化模块

    一、定义

    #序列化 —— 转向一个字符串数据类型
    #序列 —— 字符串
    
    #从数据类型 —— 字符串的过程  序列化
    #从字符串 —— 数据类型  反序列化

    二、相关模块

    #json 通用的序列化格式,并且其他语言都用
        # 但只有很少一部分数据类型可以通过json转化成字符串
    #pickle 所有的python中的数据类型都可以转化成字符串形式
        #序列化的内容只有python能理解
        #且部分反序列化依赖代码
    #shelve 有序列化句柄,使用句柄直接操作,很方便。

    三、json

    #json    dumps序列化   loads反序列化   内存中操作
    import json
    dic={'k':'v'}
    print(type(dic))
    str_d=json.dumps(dic)   #序列化
    print(type(str_d),str_d)
    # <class 'dict'>
    # <class 'str'> {"k": "v"}
    #本身单引号,但是内部用到所有的字符串元素要用双引号才能识别
    dic_d=json.loads(str_d)
    print(type(dic_d),dic_d)
    # <class 'dict'> {'k': 'v'}
    
    #数字,字符串,列表,字典,元组(转成列表再序列化)
    #集合不可以转化集合
    
    #json   dump   load  文件中操作  前一个参数是内容,第二个参数是文件
    dic2={'k2':'v2'}       #先序列化再转进去
    f=open('fff','w',encoding='utf-8')
    json.dump(dic2,f)
    f.close()
    # f=open('fff')        #还没有读文字,不用写encoding
    # res=json.load(f)
    # f.close()            #可以关闭之后再打印,因为已经读出来了
    # print(type(res),res)
    
    # 上述如果内容有中文,可以使用json.dump(dic,f,ensure_ascii=False)
    # 其他参数(数据,是否按键顺序排列,缩进,分隔符,是否默认ascii编码)
    json_dic=json.dump(data,sort_keys=True,indent=2,seperators=(',',':'),ensure_ascii=False)
    # 则写入文件的内容为中文,否则默认为bytes类型写入
    # 不可以一次多步输入。 # 必须分次往里面写 # 可以json中写入时加 ,读时for一行一行读,然后每一行进行Loads

    四、pickle

    #pickle  提供上述loads,dumps,load,dump方法
    # 并且可以多步读入
    #可以序列化集合,但是dumps之后是bites类型,loads之后是正常内容
    #dump之前,打开文件用wb,load之前,打开文件用rb

    五、shelve

    # shelve打开文件,只提供open方法
    # 文件句柄,可以直接把数据类型直接写到文件中去
    # 但每次打开就会创建三个文件,但是看不懂(bak,dat,dir)
    # 不支持多个应用同一时间往DB中写
    # 一个问题:参数写flag='r',只读,但是仍然可以修改
    # writebalck=True,参数用处,可以感知修改,减少出错概率,但是会增加额外的内存消耗和等待时间
    import shelve
    f=shelve.open('shelve_file_test')
    f['key']={'int':5,'string':'hello'}
    f.close()
    
    f1=shelve.open('shelve_file_test',flag='r')
    existing1=f1['key']
    f1['key']['int']=20
    f.close()
    print(existing1)
  • 相关阅读:
    干掉你的老板(小游戏)
    SEO优化数据系列表(图)
    javascript动态加载三
    javascript动态加载二
    截屏
    vimdiff
    pscp scp ftp samba windows send files to linux
    login windows 10 with passwd instead of pin
    modify requirements.txt
    整片注释 ,shell
  • 原文地址:https://www.cnblogs.com/lowislucifer/p/11332353.html
Copyright © 2011-2022 走看看