用配置文件里面的参数值替换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文件读写权限设置

用配置文件里面的参数值替换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. 使用eclipse根据wsdl生成客户端

    1.在需要生成的java项目右键new →other→ Web Service Client . 2.点击 Next.进入下面的界面,选择Brown...,选择WSDL,然后选择Next 3.Serv ...

  2. python自动生成excel(xlwt库)

    下面代码使用web.py框架,其他框架都大同小异. # coding: utf- import web import json import datetime import xlwt import S ...

  3. POM标签大全详解

    父(Super) POM <project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "htt ...

  4. Kaggle_泰坦尼克乘客存活预测

    转载 逻辑回归应用之Kaggle泰坦尼克之灾 此转载只为保存!!! ————————————————版权声明:本文为CSDN博主「寒小阳」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附 ...

  5. CentOS7 xrdp 安装和设置

    1) 安装 $ sudo yum install xrdp $ sudo yum install tigervnc $ sudo yum install tigervnc-server 2) 设置密码 ...

  6. 一键登录怎么在iOS端实现?这篇文章教会你!

    在一键登录出现之前,市场上最常见的APP 注册登录方式主要有账号密码.短信验证及第三方登录.这几种方式看似常见且便捷,实则存在许多安全隐患,用户体验也相对较差.首先,短信验证码到达率低.用户操作繁琐且 ...

  7. CNN for NLP

    卷积神经网络在自然语言处理任务中的应用.参考链接:Understanding Convolutional Neural Networks for NLP(2015.11) Instead of ima ...

  8. 如何设置zencart买满多少免运费?

    有时候会希望客户买满多少免运费,当订单总金额大于免运费的订单金额设值时,免运费.下面介绍一下zencart设置买满多少免运费: 1.进入后台–模块管理(Modules)–总额计算(Order Tota ...

  9. https加载http资源,导致ios手机上的浏览器图片加载问题

    今天解决一个线上bug的时候发现的问题,如下图: 从表象来看,同样的图片,安卓手机上可以正常展示,但是到ios手机上首次进入页面就不能正常显示图片,必须手动刷新一次页面才能正常加载. 这时候,我们首先 ...

  10. 数据管理必看!Kendo UI for jQuery过滤器的全球化

    Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery.Kendo UI for Angular.Kendo UI Support f ...