美文网首页
(六)编写配置文件

(六)编写配置文件

作者: 顽强的猫尾草 | 来源:发表于2018-05-23 09:38 被阅读13次

默认的配置文件config_default.py:

configs = {
    'db': {
        'host': '192.168.179.140',
        'port': 3306,
        'user': 'www-data',
        'password': 'www-data',
        'database': 'awesome'
    }
    'session': {
        'secret': 'AwEsOmE'
    }
}

需要修改其中的某些参数时,使用config_override.py来覆盖:

configs = {
    'db': {
        'host': '192.168.179.140'
    }
}

为了简化读取配置文件,可以把所有配置读取到统一的config.py中:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import config_default

# 实现了x.y的dict
class Dict(dict):
    
    def __init__(self, names=(), values=(), **kw):
        super(Dict, self).__init__(**kw)
        # zip()接受一系列可迭代的对象作为参数, 将对应的元素打包成一个个tuple, 然后返回由这些tuples组成的list
        # 可以用来做转置矩阵
        for k, v in zip(names, values):
            self[k] = v

    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AtrributeError(r"'Dict' object has no attribute '%s'" % key)

    def __setattr__(self, key, value):
        self[key] = value

def merge(defaults, override):
    r = {}
    for k, v in defaults.items():
        if k in override:
            if isinstance(v, dict):
                # 迭代
                r[k] = merge(v, override[k])
            else:
                r[k] = override[k]
        else:
            r[k] = v
    return r

def toDict(d):
    D = Dict()
    for k, v in d.items():
        D[k] = toDict(v) if isinstance(v, dict) else v
    return D

configs = config_default.configs
try:
    import config_override
    configs = merge(configs, config_override.configs)
except ImportError:
    pass

configs = toDict(configs)

相关文章

  • (六)编写配置文件

    默认的配置文件config_default.py: 需要修改其中的某些参数时,使用config_override....

  • Nginx 单台实现HTTPS

    编写配置文件

  • linux搭建DNS服务器

    安装服务 编辑配置文件 检查语法错误 编辑配置文件 编写正向DNS配置 编辑反向配置文件 全部配置文件编写完成后可...

  • Springboot使用Jetbrick模板

    1、引入pom 2、编写配置文件 配置文件有几种编写方式,可以单独写一个jetbrick的配置,然后通过主配置文件...

  • springboot集成mybatis

    编写pom文件 编写application.yml配置文件 编写实体类 编写mapper 编写mapper.xml...

  • Hibernate学习笔记

    Hibernate环境搭建: 导入相关jar包; 创建实体类; 编写映射配置文件; 编写核心配置文件; Hiber...

  • Docker compose安装Elasticsearch

    1.编写docker-compose文件 2 编写elasticsearch.yml文件 3 编写jvm配置文件 ...

  • SpringBoot之集成MyBatis

    引入工程依赖包 编写DAO接口 编写SQL配置文件(本人不太习惯注解,习惯将SQL写在配置文件中) 配置myBat...

  • SpringBoot整合MongoDB

    导入pom依赖 编写配置文件,连接mongodb 编写主启动类 编写实体类 编写操作mongodb的dao接口 编...

  • SpringBoot整合Redis

    导入相关依赖 编写application.properties配置文件,规定host和port 编写SpringB...

网友评论

      本文标题:(六)编写配置文件

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