gpt4 book ai didi

python - 防止变量替换发生在构建中

转载 作者:太空狗 更新时间:2023-10-29 20:48:36 28 4
gpt4 key购买 nike

有没有一种简单的方法可以转义用于 buildout 中变量替换的魔术字符?配置,使字符串保持不变。换句话说,我说:

[part]
attribute = ${variable}

我实际上并不希望它扩展 ${variable} 而是将其保留为文字值。

在实践中,我遇到的具体问题不在扩展配置文件本身,而在由配方“collective.recipe.template”处理的模板文件中。这使用与配置文件中使用的 buildout 相同的变量替换引擎。问题是我想用作模板的文件已经出于自身目的使用“${variable}”语法以及最终使用该文件的应用程序配置系统。

我发现解决这个问题的唯一方法是使用类似的东西:

[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $

在模板输入文件中有:

${dollar}{variable}

代替:

${variable}

它已经有了。

这样做是针对使用模板的部分查找“dollar”属性并将其替换为“$”。

与其说必须这样做,不如说希望人们可以这样做:

\${variable}

或者甚至:

$${variable}

并消除了必须有一个虚拟属性来欺骗它做我想做的事情的需要。

查看buildout的源码,匹配变量替换的方式好像没有提供转义机制。

如果确实没有办法,那么也许有人知道构建的替代模板配方,它可以进行变量扩展,但为它指示变量的任何方式提供了一种转义机制,这样就可以避免可能存在的问题模板系统扩展机制与正在模板化的文件中的文字数据之间存在冲突。

最佳答案

恐怕您对构建变量替换代码(collective.recipe.template 所依赖的代码)的分析是正确的。没有用于转义 ${section:variable} 变量替换的语法,您提供 ${dollar} 替换的解决方案是我能想到的最佳解决方法。

当然,您也可以向 zc.buildout 团队提出一个补丁,以添加对转义变量替换语法的支持。 :-)

关于python - 防止变量替换发生在构建中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1135292/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com