2015-06-09 83 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

相關問題