gpt4 book ai didi

python - 在 Python 的同一进程中捕获标准输出

转载 作者:太空狗 更新时间:2023-10-29 22:01:46 24 4
gpt4 key购买 nike

我有一个调用一堆函数的 python 脚本,每个函数都将输出写入标准输出。有时当我运行它时,我想通过电子邮件发送输出(连同生成的文件)。我想知道如何在内存中捕获输出,以便我可以使用 email 模块来构建电子邮件。

到目前为止我的想法是:

  • 使用内存映射文件(但似乎我必须为此在磁盘上保留空间,而且我不知道输出会持续多长时间)
  • 绕过所有这些并将输出通过管道发送到 sendmail(但如果我还想附加文件,这可能会很困难)

最佳答案

我修改了 None 的答案以使其成为上下文管理器:

import sys, StringIO, contextlib

class Data(object):
pass

@contextlib.contextmanager
def capture_stdout():
old = sys.stdout
capturer = StringIO.StringIO()
sys.stdout = capturer
data = Data()
yield data
sys.stdout = old
data.result = capturer.getvalue()

用法:

with capture_stdout() as capture:
print 'Hello'
print 'Goodbye'
assert capture.result == 'Hello\nGoodbye\n'

关于python - 在 Python 的同一进程中捕获标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2654834/

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