1.什么叫做序列化,反序列化?为什么要这样做?
把对象处理成方便传输的格式叫序列化。反之叫反序列化。为了数据的传输和存储
2.主要有哪几种序列化的方案?有什么区别?怎么用?
主要有pickle, shelve, json。pickle:把python中任意数据转成字符串的bytes,shelve: 把数据存储在硬盘,可以像字典一样操作,这个过程叫持久化,json: 实现前后端交互的语言,json全称javascript object notation。
pickle: dumps(), loads(),dump(c,f)--把c对象写到f文件句柄里,要close()。shelve: shelve.open(file,writeback=True),此时对字典的操作将写回硬盘,否则只在内存层面的修改,json: dumps(c,ensure_ascii=False),loads(), ensure_ascii=False指不限定用ascii码,可显示中文。
当使用dump()或者load()对文件操作时,json可写入多个json,但是读取只能读取一行内容。如果想读取全部内容,可先把多个json数据用一个列表存放,读取时候对列表循环拿到全部数据。
json虽然可跨语言,但是只能支持intstrlist upledict。
3. configparser模块在哪里运用?怎么拿到值?怎么用configparser模块做一个数据库的配置文件ini?
主要用于修改配置文档信息ini和测试环境,像字典一样拿值。‘DEAFAULT’里的值是下面的值共有的,如数据库需要转换IP时,更换方便
import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = {
"sleep": 1000,
"session-time-out": 30,
"user-alive": 999999
}
config['TEST-DB'] = {
"db_ip": "192.168.17.189",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}
config['168-DB'] = {
"db_ip": "152.163.18.168",
"port": "3306",
"u_name": "root",
"u_pwd": "123456"
}