gpt4 book ai didi

python - 如何捕获另一个模块的打印输出?

转载 作者:太空狗 更新时间:2023-10-29 20:32:41 26 4
gpt4 key购买 nike

我想知道这在 python 中是否可行:

# module1
def test():
print('hey')

# module2
import module1

module1.test() # prints to stdout

在不修改 module1 的情况下,有没有办法将其包装在 module2 中,以便我可以捕获print('hey') 在一个变量中?除了将 module1 作为脚本运行之外?

最佳答案

我不想负责修改sys.stdout然后将其恢复到以前的值。以上答案没有任何finally:子句,将其集成到其他重要代码中可能很危险。

https://docs.python.org/3/library/contextlib.html

import contextlib, io

f = io.StringIO()
with contextlib.redirect_stdout(f):
module1.test()
output = f.getvalue()

您可能需要变量 output这是 <class 'str'>使用重定向的标准输出。

注意:这段代码是从官方文档中提取出来的,只做了一些微不足道的修改(但经过测试)。这个答案的另一个版本已经给出了一个大部分重复的问题:https://stackoverflow.com/a/22434594/1092940

我在这里留下答案,因为它是比 IMO 上的其他解决方案更好的解决方案。

关于python - 如何捕获另一个模块的打印输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22822267/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com