# config文件封装
# 对配置文件进行封装
# 导入配置文件模块
from configparser import ConfigParser
# 创建一个配置文件类
class HandleConfig:
"""
处理配置文件
"""
# 定义一个实例属性
def __init__(self,filename):
# 定义一个名称:filename实例属性
self.filename = filename
# 创建配置解释器config对象
self.config = ConfigParser()
# 指定读取的配置文件, 无需变量接收读取内容
self.config.read(self.filename,encoding="utf8")
# 定义一个获取配置文件数据的实例方法,获取配置文件中对应不同数据类型的值
# get方法和字典中的get有区别
# 第一个参数section为区域名,第二个参数option为选项名
# 从配置文件中,使用索引(方括号)或者使用get方法,读取出来的所有数据都是字符串类型
def get_value(self,section,option):
# 通过定义的实例属性self.config对象,调用ConfigParser类中的get方法,并将结果进行返回
return self.config.get(section,option)
# 可以使用getint(区域名,选项名)只能读取int类型的数据,否则会报错
def get_int(self,section,option):
return self.config.getint(section,option)
# 可以使用getfloat(区域名,选项名)只能读取int类型和浮点类型的数据,否则会报错
def get_float(self,section,option):
return self.config.getfloat(section,option)
# 可以使用getboolean(区域名,选项名)来读取布尔类似的数据
def get_boolean(self,section,option):
return self.config.getboolean(section,option)
# 通过eval函数对get获取的字符串进行转义,获取配置文件中不同的数据类型
def get_eval_data(self,section,option):
return eval(self.config.get(section, option))
# 定义写入配置文件的静态方法:
# 为什么不能定义在内属性,内属性是每个对象的公共资源,每个对象都可以访问
# 读配置和写配置都用相同的对象,读配置和写配置尽量不要用相同的对象
@staticmethod
# 定义write_config方法
# datas里面传入需要写入的数据,往往是一个嵌套字典的格式
# filename是文件名
def write_config(datas,filename):
# 创建一个config对象,可以用来调用ConfigParser类中的方法
config = ConfigParser()
# 在空配置config中写入配置
# config还没有读取数据时,可以类似一个空字典
# datas是需要写入的数据
for key in datas:
config[key] = datas[key]
with open(filename,"w",encoding="utf8") as file:
config.write(file)
# 定义do_config对象,用来调用Handl