我有兴趣在 IPython 中实现一个类似于 !
的组合的行为。和 !!
.我正在尝试使用 IPython 终端作为我的 (Windows) shell 的附件。对于长时间运行的命令(例如,构建脚本),我希望能够观看输出,因为它以 !
的形式流过。做。我还想将命令的输出捕获到输出历史记录中作为 !!
确实如此,但这会推迟打印任何内容,直到所有输出都可用。
有没有人对如何实现这样的事情有任何建议?我猜是 IPython.utils.io.Tee()
object 在这里很有用,但我对 IPython 的了解不够,无法正确连接它。
最佳答案
这是我刚刚在 iPython notebook v2.3 中尝试的一段代码,它似乎完成了请求:
import sys
import IPython.utils.io
outputstream = IPython.utils.io.Tee("outputfile.log", "w", channel="stdout")
outputstream.write("Hello worlds!\n")
outputstream.close()
logstream=open("outputfile.log", "r")
sys.stdout.write("Read back from log file:\n")
sys.stdout.write(logstream.read())
日志文件与 iPython 笔记本文件在同一目录中创建,运行此单元的输出如下所示:
Hello worlds!
Read back from log file:
Hello worlds!
我还没有在 iPython 终端中尝试过这个,但没有理由在那里它不能正常工作。
(在 http://aaronswartzhackathon.org 中作为牛津参与的一部分进行了研究和回答)
关于ipython - 在 IPython 中同时显示和捕获标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20986331/