python如何捕获PyErr_Print()(或打印到stdout/stderr的任何内容)的输出?
在 Python 代码中,定义一个支持 write()
方法的对象。 将此对象赋值给 sys.stdout
和 sys.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