• 序列号模块


    #序列化模块

    **序列化的本质就是将一种数据结构(如字典、列表)等转换成一个特殊的序列(字符串或者bytes)的过程就叫做序列化。**
    

    序列化模块总共只有两种用法,要不就是用于网络传输的中间环节,要不就是文件存储的中间环节

    #json模块

    • json模块是将满足条件的数据结构转化成特殊的字符串,并且也可以反序列化还原回去。

    #dumps、loads

    • 用于网络传输,列表字典等于字符串之间的类型转换

    • json.dumps()  #序列化   将列表或字典转换成字符串
      json.loads()  #反序列   将字符串转换返回成原类型
      
    • 列表

      lst = [1,"asd",2,"asdcvccc"]
      print(type(lst),json.dumps(lst),type(json.dumps(lst)))
      >>><class 'list'> [1, "asd", 2, "asdcvccc"] <class 'str'>
      ###将列表转换成字符串
      print(type(json.dumps(lst)),json.loads(json.dumps(lst)),type(json.loads(json.dumps(lst))) )
      >>><class 'str'> [1, 'asd', 2, 'asdcvccc'] <class 'list'>
      ###将字符串转换成原类型列表
      
    • 带汉字的字符串

      a = "asdcchhh123李"
      print(json.dumps(a))
      >>>"asdcchhh123u674e"
      print(json.dumps(a,ensure_ascii=False))
      >>>"asdcchhh123李"  #当有汉字时,必须得加ensure_ascii=False
      
    • 字典

      lst = {"daye":"李晨浩"}
      print(json.dumps(lst,ensure_ascii=False),type(json.dumps(lst,ensure_ascii=False)))
      >>>{"daye": "李晨浩"} <class 'str'>
      ###将字典转换成字符串
      print(json.loads(json.dumps(lst,ensure_ascii=False)),type(json.loads(json.dumps(lst,ensure_ascii=False))))
      >>>{'daye': '李晨浩'}{'daye': '李晨浩'} <class 'dict'>
      ###将字符串转换成原类型字典
      

    #dump 、load

    • 用于文件写读,但是对于json序列化,存储多个数据到一个文件中是有问题的,默认一个json文件只能存储一个json数据,但是也可以用dumps、loads解决

    • 文件写 json.dumps()

      dic1 = {'name':'爸爸'}
      dic2 = {'age':"1811111111111111111"}
      with open("josn","a",encoding="utf-8") as f1:
          f1.write(json.dumps(dic1)+'
      ')
          f1.write(json.dumps(dic2)+'
      ') 
      
    • 文件读 json.loads()

      with open("josn","r",encoding="utf-8") as f2:
          for i in f2:
              print(json.loads(i))
      

    #序列化时间

    import json
    from json import JSONEncoder
    from datetime import datetime
    class Com(JSONEncoder):
        def default(self, obj):
            if isinstance(obj,datetime):
                return obj.strftime('%Y-%m-%d %H:%M:%S')
            else:
                return super(ComplexEncoder,self).default(obj)
    d = {'name':'alex','data':datetime.now()}
    print(json.dumps(d,cls=Com))
    
    

    #pickle模块

    • pickle模块是将Python所有的数据结构以及对象等转化成bytes类型,然后还可以反序列化还原回去

    #dumps、loads

    • 用于网络传输

      pickle.dumps()    #转换成bytes类型
      pickle.loads()    #由bytes类型转换成原格式
      
    • dic = {'k1' : 'Lichenhap'}
      print(pickle.dumps(dic))
      >>>b'x80x03}qx00Xx02x00x00x00k1qx01X	x00x00x00Lichenhapqx02s.'
      ###转换成bytes类型
      print(pickle.loads(pickle.dumps(dic)))
      >>>{'k1': 'Lichenhap'}
      ###由bytes类型转换成原类型字典
      

    #dump、load

    • 用于文件写读

      pickle.dump  文件写操作
      pickle.load   文件读操作
      
    • pickle.dump  文件写操作
      pickle.load   文件读操作
      lst = [111,"lichenhao","李晨浩"]
      with open("txt","ab") as f:   
          pickle.dump(lst,f)
      ###注意,因为这里转换成字节了,所以文件的操作模式必须是ab
      with open("txt","rb") as f1:
          print(pickle.load(f1))
      ###将文件内容读取
      

  • 相关阅读:
    SpringCloud+MyBatis+Redis整合—— 超详细实例(一)
    SpringCloud开发学习总结(五)—— 服务容错保护Hystrix
    SpringCloud开发学习总结(三)—— 服务治理Eureka
    SpringCloud开发学习总结(二)—— 简单的微服务构建
    SpringCloud开发学习总结(一)—— 基础知识
    Activiti入门
    kafka入门(3)- SpringBoot集成Kafka
    kafka入门(2)- 环境部署
    kafka入门(1)- 基本概念
    微服务深入浅出(11)-- SpringBoot整合Docker
  • 原文地址:https://www.cnblogs.com/Nayears/p/12166619.html
Copyright © 2020-2023  润新知