Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在IPython中同时显示和捕获标准输出?_Ipython - Fatal编程技术网

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

在IPython中同时显示和捕获标准输出?,ipython,Ipython,我对在IPython中实现类似于组合的行为感兴趣和。我正在尝试使用IPython终端作为(Windows)shell的附件。对于长时间运行的命令(例如,构建脚本),我希望能够在输出以的形式流式传输时观察输出可以。我还想将命令的输出捕获到输出历史记录中,如可以,但这会推迟打印任何内容,直到所有输出可用 有人对如何实现这样的目标有什么建议吗?我猜一个IPython.utils.io.Tee()对象在这里会很有用,但我对IPython的了解还不够,无法正确连接它。这里是我刚刚在IPython note

我对在IPython中实现类似于
组合的行为感兴趣
。我正在尝试使用IPython终端作为(Windows)shell的附件。对于长时间运行的命令(例如,构建脚本),我希望能够在输出以
的形式流式传输时观察输出可以。我还想将命令的输出捕获到输出历史记录中,如
可以,但这会推迟打印任何内容,直到所有输出可用


有人对如何实现这样的目标有什么建议吗?我猜一个
IPython.utils.io.Tee()
对象在这里会很有用,但我对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终端上尝试过,但是没有理由认为它在那里不起作用

(作为牛津大学参与项目的一部分进行研究和回答)