在将新行写入sys.stdout时,使Python停止发送回车符

我在Windows和Python(非常有效)阻止我发送一个独立的'\n'字符到STDOUT。 例如,以下将输出foo\r\nvar

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

我怎样才能closures这个“function”? 首先写入文件不是一个选项,因为输出是pipe道。

Solutions Collecting From Web of "在将新行写入sys.stdout时,使Python停止发送回车符"

在写任何东西之前请试试

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

正如预期的那样,它也可以用于打印。