文章目錄
配置文件調整
請看以下配置文件
[mysqld1]
user = mysql
port = 3306
expire_logs_days = 7
[mysqld2]
user = mysql
port = 3307
expire_logs_days = 7
[mysqld3]
user = mysql
port = 3308
expire_logs_days = 14
我們可以添加一個DEFAULT將重複配置項目優化,如下:
[DEFAULT]
user = mysql
port = 3306
expire_logs_days = 7
[mysqld1]
[mysqld2]
port = 3307
[mysqld3]
port = 3308
expire_logs_days = 14
這樣配置項可以縮減
DEFAULT可以隱藏在程序中(主要是爲了優雅,同時可以解決菜鳥誤刪配置文件導致找不回默認配置的煩惱)
因此繼續優化
[mysqld1]
[mysqld2]
port = 3307
[mysqld3]
port = 3308
expire_logs_days = 14
def load_with_init_dict():
'''
先初始化一個默認配置字典,然後讀取配置字典
再讀取配置文件
再字典遍歷
'''
DEFAULT_CONF = {
'DEFAULT': {
'user': 'mysql',
'port': 3306,
'expire_logs_days': 7
}
}
mysql_conf = configparser.ConfigParser()
filepath = 'configparser/test.cfg'
mysql_conf.read_dict(DEFAULT_CONF)
mysql_conf.read(filepath)
ret = {}
ret['DEFAULT'] = {}
for section, option_dict in mysql_conf.items():
ret[section] = {}
for option, val in option_dict.items():
ret[section][option] = val
return ret
def main():
print(load_with_init_dict())
if __name__ == '__main__':
main()
這個方法在面對固定域的情況下很優雅(即你知道只有mysql1, mysql2, mysql3這3個域),如果要動態調整域,對代碼進行小幅度調整即可