我有一堆遗留代码用于编码包含大量打印语句的原始电子邮件,例如
print >>f, "Content-Type: text/plain"
Run Code Online (Sandbox Code Playgroud)
这对电子邮件来说都很好,但我们现在正在利用相同的代码来输出HTTP请求.问题是Python打印语句'\n'在HTTP需要时输出'\r\n'.
看起来像Python(至少2.6.4)PRINT_NEWLINE为print语句生成一个尾随字节代码,实现为
ceval.c:1582: err = PyFile_WriteString("\n", w);
Run Code Online (Sandbox Code Playgroud)
因此,似乎没有简单的方法来覆盖print的默认换行行为.我考虑过以下解决方案
.replace('\n', '\r\n').这将干扰使用多部分编码的HTTP消息..write方法def write(self, data):
if data == '\n':
data = '\r\n'
return self._file.write(data)
Run Code Online (Sandbox Code Playgroud)
print >>f, text到f.write(text + line_end)哪里line_end可以'\n'或'\r\n'.我认为第三种选择是最合适的.听听你的Pythonic解决问题的方法会很有趣.
我正在尝试在编译Python 2.4.3时显式禁用_tkinter模块的编译.通过修改makefile很容易,但我只是附加一个配置选项以避免提供补丁.
我不明白Modules/Setup*,setup.py和它们对makefile生成的贡献之间复杂的相互作用.