zoukankan      html  css  js  c++  java
  • 序列化函数

    什么是序列化
    在我们存储数据或者网络传输数据的时候. 需要对我们的对象进行处理. 把对象处理成
    方便存储和传输的数据格式. 这个过程叫序列化. 不同的序列化, 结果也不同. 但是目的是一
    样的. 都是为了存储和传输.

    在python中存在三种序列化的⽅案.
    1. pickle. 可以将我们python中的任意数据类型转化成bytes并写入到文件中. 同样也可以把文件中好的bytes转换成我们python的数据,这个过程叫做反序列化

    # dumps ,loads是对字符串进行     dunmp, load 是对文件进行操作

    import pickle    

    class cat:

      def __init__(self,name,age):

        self.name = name

        self.age = age 

      def display(self):

        print("%s抓老鼠" % self.name)

    c = cat("tom",18)

    bs = pickle.dumps(c)  #此时bs的结果是一推二进制的代码

    cc = pickle.loads(bs) #把序列化的结果转换成对象,一样可以进行调用

    利用 pickle还可以对文件进行操作,不过要注意写入的格式以及读出来的方式

    lst = [Cat("jerry", 19), Cat("tommy", 20), Cat("alpha", 21)]   #将需要写入文件的内容装进列表中
    f = open("cat", mode="wb")   #用wb的模式把他们写入文件中
    pickle.dump(lst, f)      #  将列表全部写入文件中
    f = open("cat", mode="rb")   
    ll = pickle.load(f)   
    for el in ll:
      el.catchMouse()

    2.模块shelve

    shelve提供python的持久化操作. 什么叫持久化操作呢?说白话就是把数据写到硬盘上.
    在操作shelve的时候非常的像操作一个字典. 这个东西到后期. 就像redis差不多.

    import shelve   #给字典赋予了一个新的key以及Values
    shelf = shelve.open("sylar")
    # shelf["jay"] = "周杰伦"
    print(shelf['jay'])
    shelf.close()

    如果尝试直接改字典里面字典的Values只是在缓存中进行修改了,而文件中并不会进行改变

    举例:  #在打开的时候,后面加上 writeback = True

    s = shelve.open("sylar", writeback=True)
    s['jay']['name'] = "胡辣汤" # 尝试改变字典中的数据
    s.close()
    s = shelve.open("sylar")
    print(s['jay']) # 改变了.
    s.close()

    3, configparser模块

    该模块适用于配置文件的格式与windows ini文件类似,可以包含一个或多个节(section)每个节
    可以有多个参数(键=值).

    用configparser 模块处理文件

    config = configparser.ConfigParser()
    config.read("db.ini") # 读取⽂件
    print(config.sections()) # 获取到section. 章节...DEFAULT是给每个章节都配备的信息
    print(config.get("DEFAULT", "SESSION-TIME-OUT")) # 从xxx章节中读xxx信息,也可以像字典一样操作

    for k in config['168-DB']:
      print(k)
    for k, v in config["168-DB"].items():
      print(k, v)

    增删改操作

    # 先读取. 然后修改. 最后写回⽂件
    config = configparser.ConfigParser()
    config.read("db.ini") # 读取⽂件
    # 添加一个章节
    # config.add_section("189-DB")
    # config["189-DB"] = {
    # "db_ip": "167.76.22.189",
    # "port": "3306",

    # "u_name":"root"}

    修改信息
    config.set("168-DB", "db_ip", "10.10.10.168")

    # 删除章节
    config.remove_section("173-DB")
    # 删除元素信息
    config.remove_option("168-DB", "u_name")
    # 写回文件
    config.write(open("db.ini", mode="w"))

  • 相关阅读:
    读后感之—寒门学子重要选择-程序员
    架构中的分而治之
    如何从码农进化到项目管理者
    饿了么架构
    简单理解支付宝和蚂蚁花呗的架构
    架构小谈之美团外卖
    漫谈架构总结之1500
    平台基本信息项目目标文档
    第六学期每周总结-第三周
    质量管理之可用性战术分析
  • 原文地址:https://www.cnblogs.com/lowen107/p/9966124.html
Copyright © 2011-2022 走看看