Есть скрипт:
import sys class ErrorStream: def write(self, arg): print(arg) sys.stderr = ErrorStream() a = 1/0
Ожидаемый вывод:
Traceback (most recent call last): File "D:\Coding\Python\Programs\Tests\test.py", line 1, in <module> a = 1/0 ZeroDivisionError: division by zero
Реальный вывод (тире вставлено на месте пустых строк):
Traceback (most recent call last): - File "D:\Coding\Python\Programs\Tests\test.py", line 8, in <module> - - a = 1/0 - - ZeroDivisionError : division by zero - -
Почему sys.strderr ведет себя так странно и как реализовать ожидаемое поведение?