STINNER Victor added the comment:
> On Windows, stdin, stdout and stderr are creates using TextIOWrapper(...,
> newline=None).
> In this case, TextIOWrapper._writenl is os.linesep and so '\r\n'.
Oh, I was wrong: stdin is created with newline=None, but stdout and stderr are
created with newline="\n" and so "\n" is not translated to "\r\n".
I checked in Python 2.7: print("abc") and sys.stdout.write("abc\n") writes
b"abc\r\n" into the output file (when the output is redirected), but
sys.stdout.write("abc\r\n") writes b"abc\r\r\n". Python 3.3 should do the same:
\r\n is preferred on Windows (ex: notepad doesn't support UNIX line ending, \n).
Attached patch changes line ending for stdout and stderr on Windows: translate
"\n" to "\r\n".
It would be nice to fix this before Python 3.3 final.
----------
keywords: +patch
nosy: +georg.brandl
priority: normal -> release blocker
Added file: http://bugs.python.org/file26644/windows_stdout_newline.patch
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue13119>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com