首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OmegaConf -以名称作为键合并多个文件

OmegaConf -以名称作为键合并多个文件
EN

Stack Overflow用户
提问于 2022-09-30 13:52:27
回答 1查看 128关注 0票数 0

问题

我正在实验OmegaConf库,并且在OmegaConf.merge方法上遇到了问题。参考项目结构,有两个配置文件。当使用OmegaConf.merge方法时,它会按照预期将这两个配置组合成一个。然而,这让我感到困惑,因为我很难确定哪些配置属于特定的配置文件。

我之所以希望合并这些配置,是因为我希望有一个全局变量,所有的配置都可以跨模块使用。

由于以前所面临的限制,我不希望使用Hydra库。

项目结构

代码语言:javascript
复制
project_root
├── config
│   ├── example1.yaml
│   └── example2.yaml
└── src
    └── main.py

代码

config/example1.yaml

代码语言:javascript
复制
file: foods.txt
check: --A--

sample: XXA1

config/example2.yaml

代码语言:javascript
复制
items:
  - XXA1
  - XXA66
  
users:
  - user1
  - user2

src/main.py

代码语言:javascript
复制
import omegaconf
from omegaconf import OmegaConf

CONFIG = None  # Configurations stored here which will be imported across multiple modules.

example1_config = OmegaConf.load('../config/example1.yaml')
example2_config = OmegaConf.load('../config/example2.yaml')

CONFIG = OmegaConf.merge(example1_config, example2_config )

print(OmegaConf.to_yaml(merged_configs))

电流输出

代码语言:javascript
复制
file: foods.txt
check: --A--
sample: XXA1
items:
- XXA1
- XXA66
users:
- user1
- user2

期望输出

代码语言:javascript
复制
example1:
  file: foods.txt
  check: --A--
  sample: XXA1
example2:
  items:
  - XXA1
  - XXA66
  users:
  - user1
  - user2
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-30 17:33:47

OmegaConf.merge结合了输入的键,就像python的内置dict.update方法一样。

要获得所需的输出,您需要在输入中添加一个嵌套级别:

代码语言:javascript
复制
CONFIG = OmegaConf.merge(
    {"example1": example1_config},
    {"example2": example2_config},
)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73909847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档