首页 >后端开发 >Python教程 >如何从 Python 函数调用捕获标准输出?

如何从 Python 函数调用捕获标准输出?

Susan Sarandon
Susan Sarandon原创
2024-11-03 13:20:03768浏览

How to Capture Standard Output from Python Function Calls?

从 Python 函数调用捕获标准输出

当使用修改对象并将统计信息打印到 stdout 的 Python 库时,可能需要捕获此输出以进行进一步分析。然而,直接修改函数来返回此类信息可能并不总是可行。

为了解决这个问题,可以使用 Capturing 上下文管理器:

<code class="python">from io import StringIO
import sys

class Capturing(list):
    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>

可以使用 Capturing 上下文管理器如下所示:

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

函数调用后,输出列表将包含函数打印的行。

此技术可以多次应用,并且结果可以连接:

<code class="python">with Capturing() as output:
    print('hello world')

print('displays on screen')

with Capturing(output) as output:  # note the constructor argument
    print('hello world2')

print('done')
print('output:', output)</code>

输出:

displays on screen
done
output: ['hello world', 'hello world2']

当无法直接修改 do_something() 函数时,此方法提供了一种有效的解决方法来捕获 stdout 输出。

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

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