python如何捕获PyErr_Print()(或打印到stdout/stderr的任何内容)的输出?

python

在 Python 代码中,定义一个支持 write() 方法的对象。 将此对象赋值给 sys.stdoutsys.stderr。 调用 print_error 或者只是允许标准回溯机制生效。 在此之后,输出将转往你的 write() 方法所指向的任何地方。

做到这一点的最简单方式是使用 io.StringIO 类:

>>> importio,sys

>>> sys.stdout=io.StringIO()

>>> print("foo")

>>> print("hello world!")

>>> sys.stderr.write(sys.stdout.getvalue())

foo

hello world!

实现同样效果的自定义对象看起来是这样的:

>>> importio,sys

>>> classStdoutCatcher(io.TextIOBase):

... def__init__(self):

... self.data=[]

... defwrite(self,stuff):

... self.data.append(stuff)

...

>>> importsys

>>> sys.stdout=StdoutCatcher()

>>> print("foo")

>>> print("hello world!")

>>> sys.stderr.write("".join(sys.stdout.data))

foo

hello world!

以上是 python如何捕获PyErr_Print()(或打印到stdout/stderr的任何内容)的输出? 的全部内容, 来源链接: utcz.com/z/520620.html

回到顶部