簡體   English   中英

使 Python 在將換行符寫入 sys.stdout 時停止發出回車符

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

我在 Windows 和 Python 上(非常有效地)阻止我向 STDOUT 發送獨立的'\n'字符。 例如,以下將 output foo\r\nvar

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

我怎樣才能關閉這個“功能”? 首先寫入文件不是一種選擇,因為 output 正在通過管道傳輸。

在編寫任何內容之前嘗試以下操作:

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

正如預期的那樣,它也適用於打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM