python如何捕获PyErr_Print()(或打印到stdout / stderr的任何内容)的输出?
在 Python 代码中,定义一个支持 write()
方法的对象。 将此对象赋值给 sys.stdout
和 sys.stderr
。 调用 print_error 或者只是允许标准回溯机制生效。 在此之后,输出将转往你的 write()
方法所指向的任何地方。
做到这一点的最简单方式是使用 io.StringIO
类:
>>> import io, sys >>> sys.stdout = io.StringIO() >>> print("foo") >>> print("hello world!") >>> sys.stderr.write(sys.stdout.getvalue()) foo hello world!