首页 > 其他 > 详细

序列化函数

时间:2018-11-15 22:19:26      阅读:215      评论:0      收藏:0      [点我收藏+]

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

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

 

序列化函数

原文:https://www.cnblogs.com/lowen107/p/9966124.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!