用配置文件里面的参数值替换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
用配置文件里面的参数值替换yaml模板中的变量值【python】的更多相关文章
- 替换excel模板中的内容并使用JavaMail发送邮件
由于在公司工作,常年出差,每天都要以日报的形式向公司汇报当天的工作内容.而日报的内容大体上就只有当天工作的主要内容时变化的,其余的都是不变 的. 而我的电脑刚打开excel有点卡,因此决定使用Java ...
- saltstack通过jinja模板,将变量值增加到配置文件中?通过引用变量值修改配置文件?
需求描述: 在使用saltstack的时候,有的时候,需要根据不同的变量来增加配置,比如,bind,监听端口,这些都可以通过变量写入,并且在配置的时候引用,下面是一个例子,用来演示,如何使用jinja ...
- JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签
个人说明:为了简单实现导出数据较少的EXCEL(根据自定义书签模板) 一.替换Excel表格标签方法```/** * 替换Excel模板文件内容 * @param map * 需要替换的标签建筑队形式 ...
- Java 程序动态替换 docx 模板中定制值的实现例子
项目系统中打印功能,导出 word 文档功能是挺常用的,本文介绍自定文档模板,程序实现模板内容中值替代的功能. 模板文件 template.docx 执行 main public static v ...
- cmakelist 定义字符串,替换到脚本中。
cmake_minimum_required(VERSION 2.6 FATAL_ERROR) cmake_policy(VERSION 2.6) # . Project Name project(s ...
- 利用POI 技术动态替换word模板内容
项目中需要实现一个功能,动态替换给定模板里面的内容,生成word文档提供下载功能. 中间解决了问题有: 1.页眉的文档logo图片解决,刚开始的时候,HWPFDocument 对象无法读取图片对象(已 ...
- YAML 模板文件语法
YAML 模板文件语法 默认的模板文件是 docker-compose.yml,其中定义的每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建. 其 ...
- Python - 安全替换字符串模板(safe_substitute) 详细解释
安全替换字符串模板(safe_substitute) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/27057339 字 ...
- “字符串替换” 和 “模板设置” (application/config.php)
//视图输出字符串内容替换'view_replace_str' => [ '__PUBLIC__' => '/public/', '__ROOT__' => '/',], 模板设置: ...
随机推荐
- 如何使用ssh工具便于远程管理
前几天亲眼经历了Linux服务器运维过程,眼看着别人熟练运用Linux管理工具,自个心里不是滋味,所以自己特意整理了一篇“专题”:使用ssh服务远程管理主机. 首先在使用ssh服务工具之前,先熟悉下L ...
- 解决myeclipse没有代码提示的问题
今天和室友安装了一样的myeclipse版本,结果室友的自动提示功能有,我的输入“.”后却不能提示,这对我们敲代码简直来说是一个折磨,不能自动提示,本来还以为是系统问题,一个是win7,一个是win1 ...
- JAVA NIO 内存映射(转载)
原文地址:http://blog.csdn.net/fcbayernmunchen/article/details/8635427 Java类库中的NIO包相对于IO 包来说有一个新功能是内存 ...
- SpringBoot AOP介绍
说起spring,我们知道其最核心的两个功能就是AOP(面向切面)和IOC(控制反转),这边文章来总结一下SpringBoot如何整合使用AOP. 一.示例应用场景:对所有的web请求做切面来记录日志 ...
- 【Winfrom-Panel】Panel隐藏与显示,自动隐藏菜单, Auto-Hide Menu
设计界面:2个button,一个panel 当鼠标移动到btnHome时,显示menuPanel 当鼠标离开btnHome时,隐藏menuPanel 当btnPin箭头向左时,menuPanel为自动 ...
- EL表达式接收值
- 用electrion打包angular成桌面应用
用electrion官网的不行. 还好,可以直接照搬 https://github.com/maximegris/angular-electron 安装必要的库 npm i --save-dev el ...
- MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化
当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化. 本测试方法,可以在 https://github. ...
- SNOI2017炸弹
这个东西其实我是不太会的……但是勉强卡过去了. 首先肯定是建有向图,然后求每个节点能访问的节点个数,最裸的打法就是按照题意枚举建边然后tarjan缩点,用bitset记录一下访问节点,但是bitset ...
- truncate at 255 characters with xlsx files(OLEDB方式读取Excel丢失数据、字符串截断的原因和解决方法)
The TypeGuessRows setting is supported by ACE. Note the version numbers in the key may change depend ...