0

我想使用结构生成自定义 ejabberd 配置文件并上传到服务器。Fabric 在fabric.contrib.files.upload_template. 不幸的是 ejabberd 配置文件使用

%%%

征求意见

使用 python 字符串插值会在以下简化示例中引发错误:

%%% 这是一条评论

{resurl, %(resturl)s}

ValueError: unsupported format character 't' (0x74) at index 4

我可以用偶数替换 % > 1 的每个非不均匀出现。或者做

val = re.sub("%", "??", open("ejabberd.cfg").read())
val = val % {"resturl": "http://localhost:500/"}    
val.replace("??", "%")

可能有更好的解决方案来处理文件具有 %,也许是通过告诉 python 使用另一个字符来标记说明符的开始。

感谢您的帮助

4

1 回答 1

0

你需要加倍每个%

%%%%%% this is a comment

{resurl, %(resturl)s}

这逃脱了%; 输出将每个转换%%%.

演示:

>>> val = '''\
... %%%%%% this is a comment
... 
... {resurl, %(resturl)s}
... '''
>>> print val % {"resturl": "http://localhost:500/"}    
%%% this is a comment

{resurl, http://localhost:500/}
于 2013-08-26T16:30:28.613 回答