Сделать Python прекратить испускать возврат каретки при написании новых строк в sys.stdout

Я нахожусь в Windows, и Python (очень эффективно) мешает мне отправлять автономный символ '\n' в STDOUT. Например, следующее выведет foo\r\nvar :

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

Как отключить эту функцию? Запись в файл сначала не является опцией, потому что вывод передается по каналу.

Попробуйте следующее:

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

Если вы хотите временно переключиться на двоичный режим, вы можете написать себе обертку:

 import sys from contextlib import contextmanager @contextmanager def 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 

Добавьте 'r' перед строкой :

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

Как и ожидалось, он также работает для печати.