我有一堆编码原始电子邮件的旧代码,其中包含大量的打印语句,例如
print >>f, "Content-Type: text/plain"
对于电子邮件而言这很好,但我们现在正在利用相同的代码输出HTTP请求。问题是Python的print语句输出\n,而HTTP需要\r\n。
看起来Python(至少2.6.4版本)会为print语句生成一个尾随的PRINT_NEWLINE字节码,它的实现方式如下:
ceval.c:1582: err = PyFile_WriteString("\n", w);
因此,似乎没有简单的方法来覆盖print的默认换行行为。我考虑了以下解决方案:
.replace('\n', '\r\n')
。这将干扰使用多部分编码的HTTP消息。.write
方法。def write(self, data):
if data == '\n':
data = '\r\n'
return self._file.write(data)
print >>f, text
转换为f.write(text + line_end)
。其中line_end
可以是'\n'
或'\r\n'
。我认为第三个选项可能是最合适的。很有趣听听您对该问题采用Python的方法。
print
。把它视为调试工具,而不是生产代码的真正组成部分。 - S.Lott