在python工程代码中, 配置文件的引用是一定无法躲避的问题, 最次的办法是每次调用一个读取配置文件的函数,获得需要的变量
但是如果配置文件的格式是ini、yaml、json等富文本的形式呢?每次还得进行解析, 显然不是很好, 有更pythonic的方法么?
python里有configparse库可以方便我们进行配置文件的解析, 同时也支持多种格式
经过一番研究之后还得觉得跟我想要的效果差点什么?
然后我去看了django的配置文件是如何实现全局效果的,恍然大悟. That’s it.
这里以yaml格式的配置文件为例,目录结构
假如所有的配置文件都放在conf/global.yml文件中
1 | topdir |
global.yml
1 | default: |
conf/__init__.py
1 | #!/usr/bin/env python |
在多个环境下同一份配置文件时, mode
则变得非常有用, 只会解析mode
对应的配置
这里用到了__init__.py
这个文件的magic, 在导入时会自动地执行.
这样, 在app/app.py等其它文件中如果需要使用配置文件,则只需要导入cfg即可
然后像使用字典一样引用配置就行
1 | from conf import cfg |