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

Linda Hamilton
发布: 2024-11-03 12:31:03
原创
189 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板