我在 Windows 上,Python (非常有效地)阻止我'\n'
向 STDOUT 发送独立字符。例如,以下将输出foo\r\nvar
:
sys.stdout.write("foo\nvar")
如何关闭此“功能”?首先写入文件不是一种选择,因为输出是通过管道传输的。
我在 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