I have a bunch of legacy code for encoding raw emails that contains a lot of print statements such as
print >>f, "Content-Type: text/plain"
This is all well and good for emails, but we're now leveraging the same code for outputting HTTP request. The problem is that the Python print statement outputs '
'
whilst HTTP requires '
'
.
It looks like Python (2.6.4 at least) generates a trailing PRINT_NEWLINE
byte code for a print statement which is implemented as
ceval.c:1582: err = PyFile_WriteString("
", w);
Thus it appears there's no easy way to override the default newline behaviour of print. I have considered the following solutions
After writing the output simply do a
.replace('
', '
')
. This will interfere with HTTP messages that use multipart encoding.
Create a wrapper around the destination file object and proxy the
.write
method
def write(self, data):
if data == '
':
data = '
'
return self._file.write(data)
Write a regular expression that translates
print >>f, text
to
f.write(text + line_end)
where
line_end
can be
'
'
or
'
'
.
I believe the third option would be the most appropriate. It would be interesting to hear what your Pythonic approach to the problem would be.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…