#! python3
from contextlib import redirect_stderr
import io
f = io.StringIO()
with redirect_stderr(f):
# simulates an error
erd
Как видно выше, я использовал функцию redirect_stderr
перенаправить поток ошибок на StringIO
объекта. Тем не менее, он не работает, так как сообщение об ошибке не печатается в командной строке:redirect_stderr не работает (Python 3.5)
Traceback (most recent call last):
File "C:\Users\max\testerr.py", line 8, in <module>
erd
NameError: name 'erd' is not defined
Я испытал это на Python 3.5.1
64 битной и 64 битной 3.5.2
с теми же результатами.
A similar issue in this thread
Я также пытался писать ошибку в файл, как описано в связанном потоке, но файл пуст после выполнения сценария.
Я думаю, что перед инициализацией erd открывается. Можете ли вы рассмотреть возможность определения переменной или проверить, передано ли она в вызове функции и повторной попытке? –
'sys.stderr = io.StringIO()', вы должны знать, что ошибка все равно будет поднята, поэтому сохранение в панели объектов io, которую вы перехватываете, кажется излишним –