【问题标题】:Is it possible to modify what is printed to stdout in Python?是否可以修改 Python 中打印到标准输出的内容?
【发布时间】:2021-01-08 10:11:43
【问题描述】:

在 Python 中,覆盖 sys.excepthook 可以在出现异常时修改打印到 stderr 的内容:

>>> import sys
>>> sys.excepthook = lambda _, x, __: print('ERROR:', x)
>>> a
ERROR: name 'a' is not defined

我也在为stdout 寻找类似的功能。在 Python 中可以做到这一点吗?

>>> type(5)
<class 'int'>
>>> # some magical operations
>>> type(5)
<sinif 'tamsayi'>

这里的&lt;sinif 'tamsayi'&gt; 是将原始输出翻译成土耳其语。这只是一个示例,我并不想专门修改type 的输出。我正在寻找一种方法来检查将要写入stdout 的内容并根据我的需要对其进行修改,就像我为stderr 展示的内容一样。

【问题讨论】:

  • 你为什么不直接使用记录器?
  • @jonrsharpe 看起来很相关,我会检查一下。
  • 您可以将sys.stdout 重新分配给任何类似文件的对象。原来的stdout会保存在sys.__stdout__中。
  • @Qiu 我应该在问这个之前检查sys。光看名字我就可以说这很可能是我要找的。​​span>

标签: python python-3.x stdout


【解决方案1】:

您可能正在寻找sys.displayhook

import sys    

def my_output(x):
    #some magical operations

sys.displayhook = my_output

【讨论】:

  • sys.excepthook 用于显示异常,sys.displayhook 用于显示其他内容:D 超级直观!感谢您的回答!
猜你喜欢
  • 2013-05-01
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多