从模板生成文本文件的构建方法

z3c.recipe.template的Python项目详细描述


简介

此配方可用于从(文本)生成文本文件 模板。与collective.recipe.template不同,您还可以 指定输出文件的路径,如果 不存在。

一个简短的例子:

[buildout]
parts = zope.conf

[message]
recipe = collective.recipe.template
input = templates/message.in
output = ${buildout:parts-directory}/etc/message

mymessage = Hello, World!

在模板中,可以使用与可以使用的完全相同的变量 在构建配置中。例如,输入文件可以如下所示:

My top level directory is ${buildout:directory}
Executables are stored in ${buildout:bin-directory}

作为构建语法的扩展,您可以从 当前的构建部分直接。例如:

My message is: ${mymessage}

为什么要另一个模板配方?

iw.recipe.templateinquant.recipe.textfile都声称要执行 同样的事情。我发现他们是无证的,而且真的很危险 世界通用,而且都不在我可以修复它们的公共存储库中。在 此外,此实现利用构建变量替换 代码,使它更简单。

collective.recipe.template实际上不支持创建 要生成(和测试)的目标文件的路径。

详细说明

从模板创建文件

让我们创建一个最小的buildout.cfg文件:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = template
... ''')

我们创建一个模板文件:

>>> write('template.in',
... '''#
... My template knows about buildout path:
...   ${buildout:directory}
... ''')

现在我们可以运行buildout:

>>> print system(join('bin', 'buildout')),
Installing template.

模板确实已创建:

>>> cat('template')
#
My template knows about buildout path:
.../sample-buildout

变量buildout:directory也被路径替换。

在变量路径中创建模板

让我们创建一个最小的buildout.cfg文件。这次输出应该 在变量路径中发生:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/template
... ''')

现在我们可以运行buildout:

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

模板确实已创建:

>>> cat('parts', 'template')
#
My template knows about buildout path:
.../sample-buildout

创建缺少的路径

如果在不存在的路径中创建输出文件, 然后将为我们创建丢失的项目:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/etc/template
... ''')

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

还支持创建多个子目录:

>>> write('buildout.cfg',
... '''
... [buildout]
... parts = template
... offline = true
...
... [template]
... recipe = z3c.recipe.template
... input = template.in
... output = ${buildout:parts-directory}/foo/bar/template
... ''')

>>> print system(join('bin', 'buildout')),
Uninstalling template.
Installing template.

>>> cat('parts', 'foo', 'bar', 'template')
#
My template knows about buildout path:
.../sample-buildout

当输出路径发生更改时,将删除旧路径 卸载时。因此,上面创建的etc/目录 现在消失:

>>> ls('parts')
d  foo

更改

0.1(2009-03-09)

基于collective.recipe.template

的初始构建

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
空字符串检查在java中未按预期工作   JavaSpringWebClient:自动计算主体的HMAC签名并将其作为头传递   foreach是否有一个Java等效的foreach循环和一个引用变量?   java如何在Eclipse中导入jar   使用特定第三方或java时lombok触发错误。*方法或构造函数   安卓 java将对象数组转换为int数组   java使一定百分比的JUnit测试通过   java Android:将Seekbar的一个值与另一个值进行比较   java将int数组(图像数据)写入文件的最佳方式是什么   java取代了系统。yml的构造函数内的getProperty   sqlite Java将公钥和私钥转换为字符串,然后再转换回字符串   安卓获取白色像素并将其保存到java opencv中的数组中   java为什么是ServerSocket。setSocketFactory静态?   Java数组似乎在不直接修改的情况下更改值