打印到控制台终端而不是进入IPython Notebook的单元格输出

Mat*_*att 12 python windows ipython ipython-notebook python-3.4

我想打印到运行IPython Notebook的终端窗口而不是单元格输出.当我发出大量print呼叫时,打印到单元输出会消耗更多内存并减慢我的系统速度.从本质上讲,我想通过设计这种行为.

我尝试过以下方法:

  1. 我尝试了不同的排列printsys.stdout.write调用
  2. 我在这里,在这里这里没有帮助的情况下查看了IPython Notebook文档
  3. 我已经尝试使用作为一种解决方法,但它似乎只适用于Python 2.7

Max*_*ers 13

您必须将输出重定向到系统标准输出设备.这取决于您的操作系统.在Mac上将是:

import sys
sys.stdout = open('/dev/stdout', 'w')
Run Code Online (Sandbox Code Playgroud)

在IPython单元格中键入以上代码并对其进行评估.之后所有输出都将显示在终端中.

  • 有没有办法扭转这种局面?并恢复ipython标准输出 (3认同)
  • 你可以在重定向之前安全地引用笔记本的`stdout`:`nb_stdout = sys.stdout`.现在,您将重定向输出.要回到笔记本输出中,只需写入:`sys.stdout = nb_stdout`.更清晰的解决方案是使用[contextlib.redirect_stdout(new_target)](https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout)上下文管理器. (3认同)
  • @MaxPowers你知道你应该在Windows中写什么吗? (2认同)