ipython - 在 IPython 中同时显示和捕获标准输出?

标签 ipython

我有兴趣在 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/

相关文章:

python - 嵌入 ipython qtconsole 和传递对象

ruby - 如何在 Jupyter Web UI (Mac OS 10.10.5) 中安装 Ruby 用作笔记本?

apache-spark - PySpark错误:AttributeError:'NoneType'对象没有属性'_jvm'

python - 是否可以在 IPython 控制台中显示 Pandas 样式?

python - 如何从 ipdb 中分配给 ipython 全局命名空间?

batch-file - 如何在bat文件中插入python代码?

python - ipython --pylab 和 ipython 笔记本启动缓慢

terminal - 从终端打开新的名为jupyter的笔记本

python - 对列表类变量进行映射操作

python - Jupyter 笔记本 : connection to kernel restarts infinitely