我在Windows和Python(非常有效)阻止我发送一个独立的'\n'
字符到STDOUT。 例如,以下将输出foo\r\nvar
:
sys.stdout.write("foo\nvar")
我怎样才能closures这个“function”? 首先写入文件不是一个选项,因为输出是pipe道。
在写任何东西之前请试试
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")
正如预期的那样,它也可以用于打印。