微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python的同一过程中捕获标准输出

如何解决在Python的同一过程中捕获标准输出

您说您的脚本“调用了一堆函数”,所以我假设它们是可从您的程序访问的python函数。我还假设您正在使用print所有这些函数生成输出在这种情况下,您可以替换sys.stdoutStringIO.StringIO,它将拦截您正在编写的所有内容。然后,您最终可以.getValue在您的方法调用方法StringIO获取已发送到输出通道的所有内容。对于使用写入的子流程模块的外部程序,这也将起作用sys.stdout

这是一种便宜的方法。我建议您使用该logging模块进行输出。您将对其输出的方式有更多的控制,也可以更轻松地对其进行控制。

解决方法

我有一个Python脚本,该脚本调用了许多函数,每个函数都将输出写入stdout。有时,当我运行它时,我想通过电子邮件发送输出(以及生成的文件)。我想知道如何捕获内存中的输出,以便可以使用该email模块构建电子邮件。

到目前为止,我的想法是:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。