我已经阅读了一些Python docs,但我无法找到print_exc函数的打印位置。所以我搜索了一些堆栈溢出,它说" print_exc()
将格式化的异常打印到stdout"。 Link
我一直很困惑。在我看来,这个功能应该打印到stderr,因为它的错误!..什么是对的?
答案 0 :(得分:8)
它打印到stderr
,从以下测试中可以看出:
$ cat test.py
try:
raise IOError()
except:
import traceback
traceback.print_exc()
$ python test.py
Traceback (most recent call last):
File "test.py", line 2, in <module>
raise IOError()
IOError
$ python test.py > /dev/null
Traceback (most recent call last):
File "test.py", line 2, in <module>
raise IOError()
IOError
$ python test.py 2> /dev/null
$
答案 1 :(得分:3)
根据python documentation状态“如果省略文件或None,则输出转到sys.stderr;否则它应该是一个打开的文件或类似文件的对象来接收输出。” 这意味着您可以控制输出的打印方式/位置。
with open(outFile) as fp
print_exc(fp)
以上示例将打印到文件'outFile'
答案 2 :(得分:3)
BTW你也可以控制它:
import traceback
import sys
try:
raise Exception
except Exception as E:
traceback.print_exc(file=sys.stderr)