新建一個配置文件
-
配置文件的優點:將所有的代碼嗎和配置都變成模塊化可配置化,這樣能夠提高代碼的重用性。
-
配置文件的命名:一般以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')) # 結果:寫入成功
YAML文件的操作
yaml文件格式:
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
注:‘:’之後有一個空格和值區分開來
yaml 配置文件讀取數據
- 首先需要安裝yaml模塊,使用命令:pip install pyyaml
- 安裝完成後,導入該模塊:import yaml
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})
’‘’
使用yaml配置文件的優點
- 在yaml文件中,值爲字典和列表時填寫較爲方便
- yaml文件讀取出來的數據的數據類型會根據數據進行動態改變,例如123讀取出來爲int類型,true讀取出來爲bool類型。