How can I force Python's file.write() to use the same newline format in Windows as in Linux ("\r\n" vs. "\n")?
You need to open the file in binary mode i.e. wb
instead of w
. If you don't, the end of line characters are auto-converted to OS specific ones.
Here is an excerpt from Python reference about open()
.
The default is to use text mode, which may convert '\n' characters to a platform-specific representation on writing and back on reading.
This is an old answer, but the io.open
function lets you to specify the line endings:
import iowith io.open('tmpfile', 'w', newline='\r\n') as f: f.write(u'foo\nbar\nbaz\n')