python-3.x - 如何在 Python 中最好地使用配置文件
问题描述
我正在.json
为我的项目使用配置文件。我使用的是文件json
而不是.py
文件,因为我真的希望能够保存和加载我的配置,以处理不同的执行/模型。当我加载它时,我会得到一本字典(比如config_dict
)。我可以看到三种使用方法:
1)使用如下代码展开字典中的值:
with open(path_to_config, "r") as f:
config_dict = json.load(f)
for (k, v) in config_dict.items():
locals()[k] = v
现在完全展开我的配置需要更多的工作,我的代码中有几个地方我想这样做。所以我想创建一个函数。但是列出所有变量return()
是很挑剔的,而且不是很灵活。所以我正在考虑在函数中分配全局变量,即做这样的事情:
def f():
global x
x = 5
即,适用于我的案例:
def load_config(path_to_config):
with open(path_to_config, "r") as f:
config_dict = json.load(f)
for (k, v) in config_dict.items():
global globals()[k]
globals()[k] = v
但:
一个。此代码不起作用
湾。不知道这样做有没有风险?
2)我可以只使用 config_dict['key'] 作为配置加载后所有代码中的所有键。
3)我可以*kwargs
在我使用的函数的参数中使用,并将我的 config_dict 作为参数传递。但我觉得这不是最佳做法。
这里的最佳做法是什么,为什么?
解决方案
推荐阅读
- java - Springboot集成测试:在bean初始化之前用pwd更新application.yml属性
- reactjs - 为什么我需要向 Switch 组件提供位置对象才能使退出动画起作用?
- ecmascript-6 - 为什么 `jest.spyOn` 不能在我的 util 类上工作?
- jmeter - 在 jmeter 中将 .yml 文件上传到 graphql
- reactjs - Guzzle:无法捕获异常详细信息
- python - 根据最近的多边形 acrpy 填充点字段
- sql - 2017 年售票量最低和最高的月份是哪一个月?
- java - Android Studio Learning - 简单的 2D 游戏应用;如何让 SurfaceView 正常工作?
- javascript - 仅禁用或启用当前按钮
- java - 如何检查字符串是否匹配特定格式?