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虽然可跨语言,但是只能支持int\str\list\tuple\dict。
3. configparser模块在哪里运用?怎么拿到值?怎么用configparser模块做一个数据库的配置文件ini?
主要用于修改配置文档信息ini和测试环境,像字典一样拿值。‘DEAFAULT’里的值是下面的值共有的,如数据库需要转换IP时,更换方便
import configparserconfig = 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"}