将mako呈现的模板写入文件时创建的附加回车符

问题描述

我正在使用mako模板库生成test.txt文件,但是生成文件在每行之间包含其他空行。

我已经发现与此问题here类似的问题,建议的解决方案建议使用markupsafe,但是我不认为这也适合我的情况,因为它考虑将文本格式设置为渲染模板时需要一个参数,这不是我想要做的(我不想更改模板中的大多数文本,只输入几个变量)。

我认为还值得一提的是,如果我使用Python打印渲染的模板,则其将以正确的格式打印;多余的行仅出现在我使用Python的文件write()将模板数据写入(test.txt)的文件中。

解决方法

背负this answer,解决方案是打开文件进行写入二进制而不是写入。然后您需要将字符串转换为字节并将其写入文件。以下对我有用(tl;dr 最后两行):

templates = TemplateLookup(directories=[input_dir,],module_directory=mako_module_dir)

try:
    rendered_output = templates.get_template(target_template).render_unicode(**data)
except:
    print(mako_exceptions.text_error_template().render())
    return
with open(f'{output_dir}{os.path.sep}{os.path.basename(output_filename)}','wb') as outfile:
    outfile.write(rendered_output.encode())