首页 >后端开发 >Python教程 >如何使用上下文管理器捕获 Python 函数的输出?

如何使用上下文管理器捕获 Python 函数的输出?

Linda Hamilton
Linda Hamilton原创
2024-11-03 12:31:03255浏览

How to Capture Output from a Python Function with a Context Manager?

通过捕获拦截 Python 函数的输出

通常,第三方库会在执行期间将信息打印到 stdout。虽然这对于调试很有用,但它也会使输出混乱并扰乱其他进程。要控制此输出,请考虑利用上下文管理器来捕获它。

实现

from io import StringIO <br>import sys<p>class捕获(列表):</p><pre class="brush:php;toolbar:false">def __enter__(self):
    self._stdout = sys.stdout
    sys.stdout = self._stringio = StringIO()
    return self
def __exit__(self, *args):
    self.extend(self._stringio.getvalue().splitlines())
    del self._stringio    # free up some memory
    sys.stdout = self._stdout

用法

捕获特定代码块内的输出:

<code class="python">with Capturing() as output:
    do_something(my_object)</code>

在块之后,输出变量将包含打印到的所有行的列表stdout。

高级技术

  • 多次捕获:可以多次使用此上下文管理器来累积输出。
  • 与 contextlib.redirect_stdout() 集成 (Python 3.4) ): 这提供了另一种实现重定向的方法io.StringIO。

以上是如何使用上下文管理器捕获 Python 函数的输出?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn