【发布时间】:2018-05-03 18:10:07
【问题描述】:
我已经能够将 YAML 文档中的数据加载到配置文件中。
YAML:
id: 1
x: key1
y: key2
Python 脚本:
#Import necessary functions from Jinja2 module
from jinja2 import Environment, FileSystemLoader
#Import YAML module
import yaml
import sys
ALLOWED_ARGS = set(['template', 'data'])
def print_usage():
print('Wrong arguments: Usage: configplate.py --template=<template.jinja> --data=<data.yaml>')
def load_args(args):
out = {}
for arg in args:
if arg == __file__: #ignore the filename argument
continue
args_splited = arg.split('=')
out[args_splited[0].lstrip('-')] = args_splited[1]
if set(out.keys()) != set(ALLOWED_ARGS):
print_usage()
raise ValueError('Required argument not present.')
return out
def make(template, data):
#Load data from YAML into Python dictionary
config_data = yaml.load(open(data))
#Load Jinja2 templates
env = Environment(loader = FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True)
template = env.get_template(template)
#Render the template with data and print the output
return template.render(config_data)
if __name__ == '__main__':
if len(sys.argv) != 3:
print_usage()
else:
args = load_args(sys.argv)
res = make(args['template'], args['data'])
print(res)
配置文件:
<add name="Cloud" connectionString="{{ x }}" />
我现在面临的问题是我无法将相同的 YAML 加载到多个配置文件中。我有第二个配置文件,我想同时填写。
配置文件2:
<add name="Cloud" connectionString="{{ y }}" />
如何在同一个 python 脚本中添加它?我也不需要在控制台上设置配置文件,我可以简单地将它们的路径放入脚本中。
【问题讨论】: