Make Python stop emitting a carriage return when writing newlines to sys.stdout Make Python stop emitting a carriage return when writing newlines to sys.stdout windows windows

Make Python stop emitting a carriage return when writing newlines to sys.stdout


Try the following before writing anything:

import sysif sys.platform == "win32":   import os, msvcrt   msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)

If you only want to change to binary mode temporarily, you can write yourself a wrapper:

import sysfrom contextlib import contextmanager@contextmanagerdef binary_mode(f):   if sys.platform != "win32":      yield; return   import msvcrt, os   def setmode(mode):      f.flush()      msvcrt.setmode(f.fileno(), mode)   setmode(os.O_BINARY)   try:      yield   finally:      setmode(os.O_TEXT)with binary_mode(sys.stdout), binary_mode(sys.stderr):   # code


Add 'r' before the string:

sys.stdout.write(r"foo\nvar")

As expected, it also works for print.