How can I force Python's file.write() to use the same newline format in Windows as in Linux ("\r\n" vs. "\n")? How can I force Python's file.write() to use the same newline format in Windows as in Linux ("\r\n" vs. "\n")? python python

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.


You can still use the textmode and when you print a string, you remove the last character before printing, like this:

f.write("FooBar"[:-1])

Tested with Python 3.4.2.

Edit: This does not work in Python 2.7.


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')

From : https://stackoverflow.com/a/2642121/6271889