配置文件的优点:将所有的代码吗和配置都变成模块化可配置化,这样能够提高代码的重用性。
配置文件的命名:一般以ini , conf ,yaml ,cfg 结尾。
格式:由配置块和配置项组成,例如下方的 appsetting.ini 文件
# 这里是日志相关的配置
[log]
# 日志收集器的等级
level = DEBUG
# 输出到日志文件的等级
fh_level = WARNING
# 记录日志的文件名字
filename = all.log
# 输出到控制台的等级
sh_level = DEBUG
[test]
# 测试正整数类型
num = 123
# 测试浮点数
floatnum = 3.14
# 测试布尔值
boolstr = true
[info]
from configparser import ConfigParser
class ConfigHandle(ConfigParser):
def __init__(self, filename):
super().__init__()
self.read(filename, encoding='utf-8')
conf = ConfigHandle(r'E:\PycharmProjects\Interface_auto_test\conf\appsetting.ini')
# 使用get方法获取配置文件中的值,返回都是str类型
print(conf.get('log', 'sh_level')) # 结果:(str)DEBUG
# 使用getint只能够获取int类型的值,否则会报错。返回int类型的值
print(conf.getint('test', 'num')) # 结果:(int)123
# 使用getfloat只能够获取float类型的值,否则会报错。返回float类型的值
print(conf.getfloat('test', 'floatnum')) # 结果:(float)3.14
# 使用getboolean只能够获取布尔类型的值,否则会报错。
# 不论是大写还是小写的true,false,都回返回标准格式的True和False
print(conf.getboolean('test', 'boolstr')) # 结果:(bool)True
# 使用conf 写入配置数据,较少用
conf.set('info', 'name', 'kaishui')
# 打开文件的模式必须为 w,否则会将之前的数据再次写入
conf.write(fp=open(r'E:\PycharmProjects\Interface_auto_test\conf\appsetting.ini', 'w', encoding='utf-8')) # 结果:写入成功
info:
name: kaishui
gender: female
log:
level: DEBUG
fh_level: WARNING
sh_level: INFO
test:
host: 127.0.0.1
port: 8080
dict: {
a: 100,
b: 400
}
list: [11,44,55,77,66]
boolstr: true
注:‘:’之后有一个空格和值区分开来
with open(r'E:\PycharmProjects\Interface_auto_test\conf\myyaml.yaml', 'r', encoding='utf-8') as f:
file = yaml.load(f, Loader=yaml.FullLoader)
for item in file.items():
print(item)
‘’‘
结果:
('info', {'name': 'kaishui', 'gender': 'female'})
('log', {'level': 'DEBUG', 'fh_level': 'WARNING', 'sh_level': 'INFO'})
('test', {'host': '127.0.0.1', 'port': 8080, 'dict': {'a': 100, 'b': 400}, 'list': [11, 44, 55, 77, 66], 'boolstr': True})
’‘’