0-02--python3 configparser加載配置內容-帶默認配置

文章目錄

配置文件調整

請看以下配置文件

[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個域),如果要動態調整域,對代碼進行小幅度調整即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章