首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用pyhocon更新HOCON文件

使用pyhocon更新HOCON文件
EN

Stack Overflow用户
提问于 2021-03-25 05:38:16
回答 1查看 114关注 0票数 1

我有一个HOCON文件模板和一些类似属性的配置。此文件针对不同的“名称”(由用户输入提供)进行更新并上载。我试图通过拉取模板、更新必要的值并上传更新后的文件来构建hocon文件。

代码语言:javascript
复制
deployment {
      proxy {
        // Name has to be replaced with the name of the project
        cluster.NAME {
          property1 = [a_list]
          property2.host = "hostname"
        }
      }
    }

我可以使用pyhocon更新值:

代码语言:javascript
复制
from pyhocon import ConfigFactory


conf = ConfigFactory.parse_string(hocon_file_template)
host = "something-TEST.trial.com"
conf.put('deployment.proxy.cluster.NAME.property2.host', host)
new = HOCONConverter.convert(conf, "hocon")

但是,我需要将"cluster.NAME“中的”user_input“替换为”测试“。我尝试使用put更改名称,但这会附加到簇树中,而不是将名称更新为"TEST“

代码语言:javascript
复制
host_key = 'deployment.proxy.cluster.' ".{}.property2.host"
conf.put(host_key.format(user_input), host)

如何将NAME更新为输入值(在本例中为"TEST")?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-25 21:54:23

我能够使用pop删除删除指定的键,即"NAME“,并使用put将键"TEST”添加到树中。

代码语言:javascript
复制
from pyhocon import ConfigFactory


conf = ConfigFactory.parse_string(hocon_file_template)
# Remove NAME from template
conf.pop("deployment.proxy.cluster.NAME")
host = "something-TEST.trial.com"
# Use Test to update required properties
conf.put('deployment.proxy.cluster.TEST.property2.host', host)
new = HOCONConverter.convert(conf, "hocon")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66789777

复制
相关文章

相似问题

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