python - 使用 configparser 为多个环境配置
问题描述
这可能是一个很长的问题,但请多多包涵。
我经常创建小型自动化程序,我在开发环境中进行测试,然后推广到生产环境中工作。我使用配置文件来存储我的所有配置,到目前为止它对我来说效果很好,但是让它更难使用的一件事是根据环境切换值。
我过去使用过类似以下结构的东西,但一直想知道是否有更好的方法来维护配置文件。
[Global]
.
.
Environment = Dev
[SpecificSection-Dev]
key1 = dev value1
key2 = dev value2
keyn = dev valuen
[SpecificSection-Prod]
key1 = prod value1
key2 = prod value2
keyn = prod valuen
然后我会读取配置文件并使用环境来决定选择什么,如下所示:
parser.get('SpecificSection-' + parser.get('Global','Environment'), 'key1')
在我以前的代码版本中,我已经注释掉了其他环境的值,并且我手动注释和取消了手头任务所需的值。
我的问题很简单,有没有更好的方法来做到这一点?理想情况下,我想在配置文件中定义一次环境,而不必像我一样在代码中明确处理它。
谢谢, 卡兰
解决方案
我对 Python 不是很熟悉,所以我将使用类似 Java 的伪代码,而不是尝试在这个答案中编写 Python 代码。我建议您编写一个为原始parser
对象提供包装器的类。包装类操作的实现get()
可以委托给parser
对象,就像您在问题中显示的那样。所以,这看起来像(伪代码):
class ParserWrapper {
Parser parser;
String env;
ParserWrapper(String file) {
parser = new Parser(file);
env = parser.get("Global", "Environment");
}
String get(String name) {
return parser.get("SpecificSection-" + env, name)
}
}
推荐阅读
- sapui5 - OPA5-Tests 不适用于一个标签的多重绑定
- python - 如何预测使用 sklean 构建的线性回归模型的新输出?
- c# - C#如何检查是否选中了任何datagridview复选框
- assembly - 警告:找不到入口符号_start;默认为 0000000008048060
- security - 我应该为 PWA + 服务器端应用程序使用哪个 OAuth2 身份验证流程
- bash - 默认返回的条件返回不起作用
- docker - Docker SSH 转发 - 绑定:地址不可用
- r - 在 r 中用 ggplot 绘制一个额外的独立列
- javascript - 无法从 Javascript 中的 API 捕获响应
- android - Android-将dp单位转换为因子0.5f的像素单位