繁体   English   中英

Python traceback.print_exc()是否打印到stdout或stderr?

[英]Does Python traceback.print_exc() prints to stdout or stderr?

我已经阅读了一些Python文档 ,但我找不到print_exc函数的打印位置。 所以我搜索了一些堆栈溢出,它说“ print_exc()格式化的异常打印到stdout”。 链接

我一直很困惑..在我看来,这个功能应该打印到stderr,因为它是错误的!..什么是对的?

它打印到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
$

根据python文档声明“如果文件被省略或无,则输出转到sys.stderr;否则它应该是一个打开文件或类似文件的对象来接收输出。” 这意味着您可以控制输出的打印方式/位置。

with open(outFile) as fp
    print_exc(fp)

上面的例子将打印到文件'outFile'

顺便说一句,你也可以控制它:

import traceback
import sys



try:
    raise Exception
except Exception as E:
    traceback.print_exc(file=sys.stderr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM