python3 读取配置文件中的参数值替换yaml文件中的占位符(变量)
生活随笔
收集整理的這篇文章主要介紹了
python3 读取配置文件中的参数值替换yaml文件中的占位符(变量)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
要替換內容的yaml文件:temp.yaml
也就是要將"$$PLACEHOLDER$$"進行替換。
--- applications: - name: $$NAME$$-$$DATETIME$$-$$VERSION$$memory: 2048minstances: 1disk_quota: 2048m ################## ==================================================env:APP_ID: "$$PLACEHOLDER$$"TABLE_KEY: "$$PLACEHOLDER$$"SECURITY: "$$PLACEHOLDER$$"KEY: "$$PLACEHOLDER$$"參數值配置文件:env
APP_ID=11111111111 TABLE_KEY=22222222222 SECURITY=3333333333333 KEY=6777777777777python代碼
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 = lineif (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)))raiseif __name__ == "__main__":PropValue('env')EnvReplaceYaml('temp.yaml', 'newtemap.yaml')運行結果
總結
以上是生活随笔為你收集整理的python3 读取配置文件中的参数值替换yaml文件中的占位符(变量)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python字符串截取:截取yaml文件
- 下一篇: python3 和python2文件相互