zoukankan      html  css  js  c++  java
  • python中的序列化和反序列化

    ~~~~~~滴滴,,什么是序列呢?可以理解为序列就是字符串。
    序列化的应用
    • 写文件(数据传输)
    • 网络传输
    序列化和反序列化的概念
     
    • 序列化模块:将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
    • 序列化:内存中的对象转换为字节序列(字符串)
    • 反序列化:将字节序列转换为内存中的对象
    序列化的目的:
    1.以某种存储形式是自定义对象持久化
    2.将对象从一个地方传递到另一个地方
    3.使程序更具有维护性

    各种模块的特点和应用

    1.json模块:通用的序列化格式 只有很少的一部分数据类型通过json转化为字符串

    可以进行序列化的:数字 字符串 元组 列表   不能转集合
    1.dumps() 序列化方法
    dic={'a':'1',"b":'2'}
    print(type(dic),dic)
    import json
    str_dic=json.dumps(dic)
    print(type(str_dic),str_dic)
    结果:

    <class 'dict'> {'a': '1', 'b': '2'}
    <class 'str'> {"a": "1", "b": "2"}

    2.loads反序列化方法
    dic_d=json.loads(str_dic)
    print(type(dic_d),dic_d)
    结果;
    <class 'dict'> {'a': '1', 'b': '2'}
    3.dump和load  不加s  和文件相关的操作
    import json
    dic={'a':'1',"b":'2'}
    f=open('fff','w',encoding='utf-8')
    json.dump(dic,f)
    f.close()

    f=open('fff')
    res=json.load(f)
    print(type(res),res)
    结果:
    <class 'dict'> {'a': '1', 'b': '2'}
    当出现中文的时候:加上下面的参数,文件中显示的就是中文了
    ***ensure_ascii=False

    json.dump({'国籍':'美国'},f,ensure_ascii=False) ret = json.dumps({'国籍':'美国'},ensure_ascii=False)
     
     

     

    2.pickle模块:所有的python中的数据类型都可以转化 但只有pyth理解,且部分反序列化依赖代码

    pickle模块提供了四个功能:dumps、dump(序列化,存)、loads(反序列化,读)、load  (不仅可以序列化字典,列表...可以把python中任意的数据类型序列化

     

    3.shelve模块:序列化句柄 直接操作,方便

    此模块只提供给我们一个open方法,使用key来访问的,使用起来和字典类似

  • 相关阅读:
    go语言学习之从例子开始
    分享一个不错的Unittest测试报告
    selenium各种定位方法(转)
    HTMLTESTRunner自动化测试报告增加截图功能
    selenium之chrome驱动版本
    Python基础(六) python生成xml测试报告
    vue+elementUI 表头按钮
    vue+elementUI滚动条
    vue表格表头添加按钮
    elementUI升级版本后Dialog弹空不显示问题
  • 原文地址:https://www.cnblogs.com/lxx99/p/11772587.html
Copyright © 2011-2022 走看看