序列化函数

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

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

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

import pickle    缓存

class cat:网络

  def __init__(self,name,age):spa

    self.name = name对象

    self.age = age ip

  def display(self):rem

    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"))

相关文章
相关标签/搜索