如何解决在Python的同一过程中捕获标准输出
您说您的脚本“调用了一堆函数”,所以我假设它们是可从您的程序访问的python函数。我还假设您正在使用print
所有这些函数生成输出。在这种情况下,您可以替换sys.stdout
为StringIO.StringIO
,它将拦截您正在编写的所有内容。然后,您最终可以.getValue
在您的方法上调用方法,StringIO
以获取已发送到输出通道的所有内容。对于使用写入的子流程模块的外部程序,这也将起作用sys.stdout
。
这是一种便宜的方法。我建议您使用该logging
模块进行输出。您将对其输出的方式有更多的控制,也可以更轻松地对其进行控制。
解决方法
我有一个Python脚本,该脚本调用了许多函数,每个函数都将输出写入stdout。有时,当我运行它时,我想通过电子邮件发送输出(以及生成的文件)。我想知道如何捕获内存中的输出,以便可以使用该email
模块构建电子邮件。
到目前为止,我的想法是:
- 使用内存映射文件(但是似乎我必须为此在磁盘上保留空间,而且我不知道输出将持续多长时间)
- 绕过所有这些并将输出通过管道传递到sendmail(但是如果我也想附加文件,则可能很难)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。