1. 程式人生 > 其它 >python3 讀取配置檔案中的引數值替換yaml檔案中的佔位符(變數)

python3 讀取配置檔案中的引數值替換yaml檔案中的佔位符(變數)

技術標籤:Python

要替換內容的yaml檔案:temp.yaml

也就是要將"$$PLACEHOLDER$$"進行替換。

---
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

python程式碼

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')

執行結果

在這裡插入圖片描述