python 模版库 jinjia2 使用

在工作中经常需要用到模版,使用参数来动态生成文件,例如:我们在k8s中,一些相似的deployment ,service ,我就使用yaml定义简单的属性,再定义两个deployment和service的模版,然后使用yaml库读取yaml定义的属性再使用jinjia2动态生成各个应用的部署模版。

1. 安装

pip install Jinja2

2. 简单使用

from jinja2 import Template

tpl = Template('my name is : {{ name }}')
text = tpl.render(name='jack')
print text

运行后:

$ python ./jinjia2-simple.py 
my name is : jack

3. 使用说明:

1.配置模板文件搜索路径 
TemplateLoader = jinja2.FileSystemLoader(searchpath=’/xxx’)

2.创建环境变量 
TemplateEnv = jinja2.Environment(loader=TemplateLoader)

3.加载模板,渲染数据 
template = TemplateEnv.get_template(template_name) 
html = template.render(**kw)


4. 读取yaml文件,并使用模版,生成文件:

4.1 定义yaml文件(etc/userInfo.yaml)

username: zxx
age: 18
orther :
  height: "175CM"
  weitht: "107KG"
JobHistory: 
  - name : "IBM"
    date : "2015-2017"
  - name : "GA"
    date : "2017-now"

4.2 定义模版文件(templates/config.tpl)

<h1>username: {{ username }}</h1>
<h1>age: {{ age }}</h1>
<h1>other.height: {{ other['height'] }} </h1>
<h1>other.height: {{ other['weight'] }} </h1>
<h1>JobHistory:</h1>
   {% for key in JobHistory %}
   <h2>
       name: {{ key }} , 
       value: "{{ JobHistory[key] }}"
   </h2>
   {% endfor %}

4.3 编写执行文件(test.py):

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from jinja2 import Environment, FileSystemLoader
import os
import yaml
import codecs

def generatefile(srcfile,tplpath,tplfile):
  #Load data from YAML into Python dictionary
  config_data = yaml.load(open(srcfile))

  #Load Jinja2 template
  env = Environment(loader = FileSystemLoader(tplpath), trim_blocks=True, lstrip_blocks=True)
  template = env.get_template(tplfile)

  #Render the template with data and print the output
  return template.render(config_data)

content = generatefile('./etc/userInfo.yaml','./templates','config.tpl')
print content

4.4 运行结果:

$ ./test.py 
<h1>username: zxx</h1>
<h1>age: 18</h1>
<h1>other.height: 175CM </h1>
<h1>other.height:  </h1>
<h1>JobHistory:</h1>
   <h2>
       name: {'date': '2015-2017', 'name': 'IBM'} , 
       value: ""
   </h2>
   <h2>
       name: {'date': '2017-now', 'name': 'GA'} , 
       value: ""
   </h2>

参考:

http://jinja.pocoo.org/docs/dev/


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中,有几个常用的模板匹配可以用于图像处理和模式识别的任务。以下是一些常见的模板匹配: 1. OpenCV:OpenCV 是一个广泛使用的计算机视觉,它提供了许多图像处理和计算机视觉算法,包括模板匹配。使用 OpenCV 的 `cv2.matchTemplate()` 函数可以进行模板匹配。 2. scikit-image:scikit-image 是一个基于 NumPy 的图像处理,它提供了一系列图像处理和计算机视觉算法。`skimage.template_matching` 模块提供了 `match_template()` 函数用于模板匹配。 3. aircv:aircv 是一个基于 OpenCV 的 Python 图像识别和模板匹配,它提供了一些方便的函数和方法,用于在图像中进行模板匹配和图像识别等任务。 这些都提供了不同的函数和方法来进行模板匹配,具体的用法可以参考它们的文档和示例代码。 以下是一个使用 OpenCV 进行模板匹配的示例代码: ```python import cv2 # 加载原始图像和模板图像 img = cv2.imread('original_image.jpg', 0) template = cv2.imread('template_image.jpg', 0) # 使用模板匹配算法进行匹配 result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED) # 获取匹配结果的位置 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) top_left = max_loc bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0]) # 绘制矩形框在原始图像上显示匹配结果 cv2.rectangle(img, top_left, bottom_right, (0, 0, 255), 2) # 显示原始图像和匹配结果 cv2.imshow('Original Image', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上面的示例中,我们首先使用 `cv2.imread()` 函数加载原始图像和模板图像。然后,使用 `cv2.matchTemplate()` 函数进行模板匹配,得到匹配结果。接下来,我们可以通过 `cv2.minMaxLoc()` 函数获取匹配结果的位置,并使用 `cv2.rectangle()` 函数在原始图像上绘制矩形框来显示匹配结果。 请注意,这只是 OpenCV 的模板匹配的基本用法示例,更多高级功能和用法可以参考 OpenCV 的文档或示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值