美文网首页
python3--配置文件优化

python3--配置文件优化

作者: w_dll | 来源:发表于2022-03-01 22:43 被阅读0次

    这次用的是python自带的配置解析库
    简单的测了下 能满足需求 主要是跨文件的全局变量
    以及初始化的时候全局变量的读取

    主函数

    # main.py
    import conf.config as conf
    import models.models as models
    
    def main():
        conf.init()
        models.conn()
    
    if __name__ == '__main__':
        main()
    

    配置初始化

    # config.py
    import configparser
    import argparse
    import sys
    import os
    
    def init():
        global config_name
        parser = argparse.ArgumentParser()
        default_conf = os.path.join('conf', 'config.ini')
        parser.add_argument("-f", "--file", help="配置文件", default=default_conf, type=str)
        args = parser.parse_args()
        config_name = args.file
        # 读取mysql的配置 设置全局变量
        set_mysql_config(config_name)
    
    # 读取初始化后的全局变量
    def get_config_file_name():
        return config_name
    
    def get_mysql_config():
        return mysql_cfg
    
    # 解析配置文件
    def read_config_file(config_name):
        conf = configparser.ConfigParser()
        # print(type(conf))   #conf是类
        # config_name = 'config.ini'
        conf.read(config_name)
        return conf
    
    # 解析配置如果出错直接退出了
    def set_mysql_config(config_name):
        global mysql_cfg
        key = 'mysql'
        try:
            config_info = read_config_file(config_name)
            mysql_cfg = {
                'host': config_info.get(key, 'host'),
                'port': config_info.get(key, 'port'),
                'user': config_info.get(key, 'user'),
                'pass': config_info.get(key, 'pass'),
                'db': config_info.get(key, 'db'),
            }
        except Exception as e:
            print(e)
            sys.exit(1)
    
    

    调用测试

    # import pymysql
    import conf.config as config
    
    def conn():
        mysql_cfg = config.get_mysql_config()
        print(mysql_cfg)
    
    

    相关文章

      网友评论

          本文标题:python3--配置文件优化

          本文链接:https://www.haomeiwen.com/subject/qwwjrrtx.html