我有兴趣在IPython中实现一种行为,就像!
和!!
的组合。我正在尝试使用IPython终端作为我的(Windows)shell的附件。对于长时间运行的命令(例如,构建脚本),我希望能够像!
那样在输出时观察输出。我还希望将命令的输出捕获到输出历史记录中!!
,但这会延迟打印任何内容,直到所有输出都可用。
有没有人对如何实现这样的事情有任何建议?我猜这里有一个IPython.utils.io.Tee()
对象很有用,但是我对IPython的了解还不够正确。
答案 0 :(得分:0)
以下是我刚刚在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的一部分研究和回答)