【问题标题】:Parse environment variable from yaml with pyyaml使用 pyyaml 从 yaml 解析环境变量
【发布时间】:2021-04-01 12:22:30
【问题描述】:

我有以下 yaml 文件:

config:
  username: admin
  password: ${SERVICE_PASSWORD}
  service: https://${SERVICE_HOST}/service

如何从环境中加载密码和主机值?

【问题讨论】:

    标签: python-3.x environment-variables yaml pyyaml


    【解决方案1】:

    为了加载环境变量,您需要添加一些样板来帮助 pyyaml 查找和解析这些值:

    import yaml, re, os
    
    env_pattern = re.compile(r".*?\${(.*?)}.*?")
    def env_constructor(loader, node):
        value = loader.construct_scalar(node)
        for group in env_pattern.findall(value):
            value = value.replace(f"${{{group}}}", os.environ.get(group))
        return value
    
    yaml.add_implicit_resolver("!pathex", env_pattern)
    yaml.add_constructor("!pathex", env_constructor)
    
    print(yaml.load("""
    config:
      username: admin
      password: ${SERVICE_PASSWORD}
      service: https://${SERVICE_HOST}/service
    """))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-17
      • 2012-07-20
      • 2017-08-20
      • 2019-02-13
      • 2016-09-12
      • 2020-01-16
      • 2021-12-07
      • 1970-01-01
      相关资源
      最近更新 更多