环境分离
在开发项目时通常都会有两个及以上的环境,由于不同环境的配置文件路径是不相同的,小编这里就有三个不同的环境,所以如何将环境分离这是关键这里就将线上环境于本地环境分离
首先创建两个配置文件分别为 dev 环境和test 环境
目录结构
global_config.ini
# type代表要使用环境的配置文件
[ENV]
type = db_config.ini
global_config.py
import configparser
import logging
import os
"""
全局配置类,加载常用的配置对象,配置文件为config/global_config.ini
读取配置时,使用function-name:value的方式取值
"""
def get_conf_path() -> str:
"""
读取当前环境目录
:return:
"""
root_directory = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
conf_path = os.path.join(root_directory, 'config')
logging.info('conf_paht ==> [%s]', conf_path)
return conf_path
def init_config(function, name):
"""
读取配置文件,满足test目录和项目根目录同时读取
:param function:
:param name:
:return:
"""
conf_path = get_conf_path()
_conf = configparser.ConfigParser()
_conf.read(os.path.join(conf_path, "global_config.ini"), encoding='utf-8')
conf = _conf[function][name]
logging.info(" %s.%s = [%s]", function, name, conf)
return conf
def init_env():
"""
环境初始化
:return:
"""
conf = init_config("ENV", "type")
return get_conf_path() + os.sep + conf
对于 get_conf_path方法详解
获取配置文件路径
os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(__file__))), ‘config’)
os.path.dirname(__file__)
获取当前文件路径(不包含文件名,区分绝对路径和相对路径)
两次嵌套可以获取上级目录
通过abspath
来获取绝对路径
从而避免了不同环境下路径冲突问题
最后使用join
拼接配置文件的路径