zoukankan      html  css  js  c++  java
  • 用配置文件里面的参数值替换yaml模板中的变量值【python】

    用配置文件里面的参数值替换yaml模板中的变量值【python】

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2019/9/20 15:44
    # @Site    : 
    # @File    : VarsubYaml.py
    # @Software: PyCharm
    """
    """
    import sys, os
    from contextlib import ExitStack
    
    profileList = {}
    
    
    def PropValue(envfile):
        with open(envfile) as profile:
            new_profile = profile.readlines()
            print(new_profile)
            for line in new_profile:
                line_key = line.strip().split("=", 1)[0];
                profileList[line_key] = line.strip().split("=", 1)[1]
    
    
    def EnvReplaceYaml(yamlfile, newyamlfile):
        try:
            with ExitStack()  as stack:
                yml_file = stack.enter_context(open(yamlfile,'r+'))
                yml_output = stack.enter_context(open(newyamlfile,'w'))
    
                yml_file_lines = yml_file.readlines()
                for line in yml_file_lines:
                    new_line = line
                    if (new_line.find('$$PLACEHOLDER$$') > 0):
                        env_list = new_line.split(':')
                        env_name = env_list[0].strip()
                        replacement = ""
                        if env_name in profileList.keys():
                            replacement = profileList[env_name];
                        new_line = new_line.replace('$$PLACEHOLDER$$', replacement)
                    yml_output.write(new_line)
        except IOError as e:
            print("Error: " + format(str(e)))
            raise
    
    
    if __name__ == "__main__":
        PropValue('env')
        EnvReplaceYaml('temp.yaml', 'newtemap.yaml')
    

    temp.yaml

    ---
    applications:
    - name: $$NAME$$-$$DATETIME$$-$$VERSION$$
      memory: 2048m
      instances: 1
      disk_quota: 2048m
    ################## ==================================================
      env:
         APP_ID: "$$PLACEHOLDER$$"
         TABLE_KEY: "$$PLACEHOLDER$$"
         SECURITY: "$$PLACEHOLDER$$"
         KEY: "$$PLACEHOLDER$$"
    

    env

         APP_ID=11111111111
         TABLE_KEY=22222222222
         SECURITY=3333333333333
         KEY=6777777777777
    

    原文中的nested已经在python3中弃用了,改为ExitStack

    参考:https://www.cnblogs.com/husbandmen/p/8783232.html

    python文件读写权限设置

  • 相关阅读:
    懒惰了
    android环境搭建问题总结(0基础)
    android初次配置运行环境
    android 模拟器黑屏
    MapReduce——求每年最高气温
    MapReduce——调用HDFS
    11.Mapreduce实例——MapReduce自定义输出格式小
    MapReduce——Docker服务安装
    10.Mapreduce实例——MapReduce自定义输入格式
    Docker镜像操作——Mysql安装
  • 原文地址:https://www.cnblogs.com/mrwuzs/p/11558381.html
Copyright © 2011-2022 走看看