将部分YAML加载到字典中

时间:2017-01-10 03:59:51

标签: python dictionary yaml partial

我为每个实例配置了以下YAML。

prod:
    login: A
    var1: VP1
    var2: VP2
QA:
   login: B
   var1: QP1
   var2: QP2

我想加载

  • 如果我当前的环境是QA,则只有QA会阻止进入字典。
  • 如果我当前的环境是生产的话,只有Prod阻止进入dict。

如何有条件地将一块YAML加载到字典中?

下游代码是这样的

#bin/ksh
login = {login}
var1 = {var1}
var2 = {var2}

我希望根据环境在ksh脚本中解析这些值。

2 个答案:

答案 0 :(得分:1)

只需加载整个文件,然后只抓取所需密钥下的内容。

with open('data.yml') as f:
    d = yaml.load(f.read())
    print yaml.dump(d['QA'])

类似的东西。

答案 1 :(得分:0)

import yaml
import socket

qa="172.27.139.94"
prod="172.27.139.95"
ip = socket.gethostbyname(socket.gethostname())
if ip == qa:
    yml_dic = yaml.load(open('yamlconfig.yml', 'r'))["QA"]
elif ip == prod:
    yml_dic = yaml.load(open('yamlconfig.yml', 'r'))["prod"]

print yml_dic