【发布时间】:2016-07-10 12:13:30
【问题描述】:
#! python3
from contextlib import redirect_stderr
import io
f = io.StringIO()
with redirect_stderr(f):
# simulates an error
erd
如上所示,我使用redirect_stderr 函数将stderr 重定向到StringIO 对象。但是,它不起作用,因为错误消息仍然在命令提示符中打印出来:
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 位和 3.5.2 64 位上对其进行了测试,结果相同。
A similar issue in this thread
我也尝试将错误写入链接线程中描述的文件,但运行脚本后文件为空。
【问题讨论】:
-
我认为erd是在初始化之前访问的。是否可以考虑定义变量或检查是否在函数调用中传入并重新运行?
-
sys.stderr = io.StringIO(),您应该知道错误仍然会引发,因此在 io 对象栏中存储您正在捕获的异常似乎是多余的
标签: python python-3.x std stderr