序列化函数
Posted lowen107
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化函数相关的知识,希望对你有一定的参考价值。
什么是序列化
在我们存储数据或者网络传输数据的时候. 需要对我们的对象进行处理. 把对象处理成
方便存储和传输的数据格式. 这个过程叫序列化. 不同的序列化, 结果也不同. 但是目的是一
样的. 都是为了存储和传输.
在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"))
以上是关于序列化函数的主要内容,如果未能解决你的问题,请参考以下文章