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

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # @Time : 2019/9/20 15:44
  4. # @Site :
  5. # @File : VarsubYaml.py
  6. # @Software: PyCharm
  7. """
  8. """
  9. import sys, os
  10. from contextlib import ExitStack
  11. profileList = {}
  12. def PropValue(envfile):
  13. with open(envfile) as profile:
  14. new_profile = profile.readlines()
  15. print(new_profile)
  16. for line in new_profile:
  17. line_key = line.strip().split("=", 1)[0];
  18. profileList[line_key] = line.strip().split("=", 1)[1]
  19. def EnvReplaceYaml(yamlfile, newyamlfile):
  20. try:
  21. with ExitStack() as stack:
  22. yml_file = stack.enter_context(open(yamlfile,'r+'))
  23. yml_output = stack.enter_context(open(newyamlfile,'w'))
  24. yml_file_lines = yml_file.readlines()
  25. for line in yml_file_lines:
  26. new_line = line
  27. if (new_line.find('$$PLACEHOLDER$$') > 0):
  28. env_list = new_line.split(':')
  29. env_name = env_list[0].strip()
  30. replacement = ""
  31. if env_name in profileList.keys():
  32. replacement = profileList[env_name];
  33. new_line = new_line.replace('$$PLACEHOLDER$$', replacement)
  34. yml_output.write(new_line)
  35. except IOError as e:
  36. print("Error: " + format(str(e)))
  37. raise
  38. if __name__ == "__main__":
  39. PropValue('env')
  40. EnvReplaceYaml('temp.yaml', 'newtemap.yaml')

temp.yaml

  1. ---
  2. applications:
  3. - name: $$NAME$$-$$DATETIME$$-$$VERSION$$
  4. memory: 2048m
  5. instances: 1
  6. disk_quota: 2048m
  7. ################## ==================================================
  8. env:
  9. APP_ID: "$$PLACEHOLDER$$"
  10. TABLE_KEY: "$$PLACEHOLDER$$"
  11. SECURITY: "$$PLACEHOLDER$$"
  12. KEY: "$$PLACEHOLDER$$"

env

  1. APP_ID=11111111111
  2. TABLE_KEY=22222222222
  3. SECURITY=3333333333333
  4. KEY=6777777777777

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

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

python文件读写权限设置

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

  1. 替换excel模板中的内容并使用JavaMail发送邮件

    由于在公司工作,常年出差,每天都要以日报的形式向公司汇报当天的工作内容.而日报的内容大体上就只有当天工作的主要内容时变化的,其余的都是不变 的. 而我的电脑刚打开excel有点卡,因此决定使用Java ...

  2. saltstack通过jinja模板,将变量值增加到配置文件中?通过引用变量值修改配置文件?

    需求描述: 在使用saltstack的时候,有的时候,需要根据不同的变量来增加配置,比如,bind,监听端口,这些都可以通过变量写入,并且在配置的时候引用,下面是一个例子,用来演示,如何使用jinja ...

  3. JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签

    个人说明:为了简单实现导出数据较少的EXCEL(根据自定义书签模板) 一.替换Excel表格标签方法```/** * 替换Excel模板文件内容 * @param map * 需要替换的标签建筑队形式 ...

  4. Java 程序动态替换 docx 模板中定制值的实现例子

    项目系统中打印功能,导出 word 文档功能是挺常用的,本文介绍自定文档模板,程序实现模板内容中值替代的功能. 模板文件 template.docx ​ 执行 main public static v ...

  5. cmakelist 定义字符串,替换到脚本中。

    cmake_minimum_required(VERSION 2.6 FATAL_ERROR) cmake_policy(VERSION 2.6) # . Project Name project(s ...

  6. 利用POI 技术动态替换word模板内容

    项目中需要实现一个功能,动态替换给定模板里面的内容,生成word文档提供下载功能. 中间解决了问题有: 1.页眉的文档logo图片解决,刚开始的时候,HWPFDocument 对象无法读取图片对象(已 ...

  7. YAML 模板文件语法

    YAML 模板文件语法 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建. 其 ...

  8. Python - 安全替换字符串模板(safe_substitute) 详细解释

    安全替换字符串模板(safe_substitute) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27057339 字 ...

  9. “字符串替换” 和 “模板设置” (application/config.php)

    //视图输出字符串内容替换'view_replace_str' => [ '__PUBLIC__' => '/public/', '__ROOT__' => '/',], 模板设置: ...

随机推荐

  1. Phoenix实现分页查询

    1 利用offset语法,官网的语法 ELECT * FROM TEST LIMIT 1000; SELECT * FROM TEST LIMIT 1000 OFFSET 100; 2 公式如下 SE ...

  2. Windows Server 2016分层式存储,使用PowerShell修改底层介质类型

    新部署的备份服务器,需要做分层式存储,按照网上最常见一个作者叫刘兵的文档,名叫<Windows Server2016分层存储技术详细拆解手册>,做到使用PowerShell修改磁盘的Med ...

  3. three.js之让物体动起来方式(二)移动物体

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. windows漏洞MS03_026

    话不多说,直接进入正题 第一步查看是否能ping通,第二步就是扫描端口,开放了端口才能进行攻击 linux进入msfconsole,搜索03_026 search 03_026 等待一会,返回漏洞的全 ...

  5. python 之多线程join()

    join()其实就是阻塞线程,控制线程的执行,从而控制住代码的执行顺序. 参照这篇文章:python3对多线程join的理解 通常都是,线程join()后,顺序执行join()后面的代码,如下面的例子 ...

  6. 开源框架相关面试问题-retrofit网络框架面试问题讲解

    retrofit使用简介: 在retrofit中通过一个接口作为Http请求的api接口.注意:@GET("url")中的url只是一个路径,不包含主机号的. 创建一个retrof ...

  7. 给零基础的小白从0到1的react-naitve电商app——简单易学!

    先上链接https://github.com/duf1991/DY...我的第一个react-native学习成果,欢迎各位大佬star和issue!

  8. 函数参数-undefined-默认值-可选参数

    1.函数参数为undefined时,触发参数默认值 2.实参数量 < 形参数量,多余的形参值为 underfined 3.设置可选参数 1)JS中: 检测 undefined :function ...

  9. Java程序中实现 MySQL数据库的备份与还原

    案例代码: 数据库备份 //mysqldump -h端口号 -u用户 -p密码 数据库 > d:/test.sql --备份D盘 //备份 public static void dataBase ...

  10. 关于C# Dockpanel的一些入门的基本操作

    关于C# Dockpanel的一些入门的基本操作 原文链接:https://blog.csdn.net/Lc1996Jm/article/details/51881064 一.引用: 1.建立一个Wi ...