2015-06-09 56 views
11

我想打印到运行IPython Notebook的终端窗口,而不是输入到单元格输出中。当我发出大量的print调用时,打印到单元输出会消耗更多内存并降低系统速度。本质上,我想通过设计行为this打印到控制台终端不进入IPython Notebook的单元输出

我曾尝试以下:

  1. 我试过的print不同的排列和sys.stdout.write电话
  2. 我看着IPython的笔记本文档hereherehere没有帮助
  3. 我已经尝试使用this作为解决方法,但它似乎只能在Python 2.7上工作

回答

11

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

import sys 
sys.stdout = open('/dev/stdout', 'w') 

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

+2

有没有办法扭转了吗?并恢复ipython stdout –

+2

你可以例如在重定向之前安全地引用笔记本的'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)上下文管理器。 – MaxPowers

+1

@MaxPowers你知道你应该在Windows中写什么吗? – Yaeli778

1

在Windows中,这可以工作:

import sys 
sys.stdout = open(1, 'w') 
+0

嗨你被复制@MaxPowers的答案和张贴 – Dilip

相关问题