2015-06-09 5 views
11

Ich möchte in das Terminal-Fenster drucken, die IPython Notebook und nicht in die Zelle ausgeführt wird. Das Drucken in die Zellenausgabe verbraucht mehr Speicher und verlangsamt mein System, wenn ich eine beträchtliche Anzahl von print-Anrufen ausstelle. Im Wesentlichen möchte ich this Verhalten von Design.Drucken in Konsole Terminal nicht in Zelle Ausgabe von IPython Notebook

Ich habe versucht, die folgenden:

  1. habe ich versucht, eine andere Permutationen von print und sys.stdout.write Anrufe
  2. ich an der IPython Notebook-Dokumentation sah here, here und here ohne Hilfe
  3. ich versucht habe, mit this als Workaround, aber es scheint nur auf Python 2.7 zu arbeiten

Antwort

11

Sie müssen Ihre Ausgabe an das System-Standard-Ausgabegerät umleiten. Dies hängt von Ihrem Betriebssystem ab. Auf Mac wäre das:

Geben Sie den obigen Code in eine IPython-Zelle ein und bewerten Sie ihn. Danach werden alle Ausgaben im Terminal angezeigt.

+2

Gibt es eine Möglichkeit, dass umgekehrt? und erholen ipython stdout –

+2

Sie könnten z.B. Sichern Sie einen Verweis auf das 'stdout' des Notebooks, bevor Sie umleiten:' nb_stdout = sys.stdout'. Jetzt würden Sie die Ausgabe umleiten. Um in die Notebook-Ausgabe zurückzukehren, schreiben Sie einfach: 'sys.stdout = nb_stdout'. Eine sauberere Lösung wäre die Verwendung des Kontext-Managers [contextlib.redirect_stdout (new_target)] (https://docs.python.org/3.4/library/contextlib.html#contextlib.redirect_stdout). – MaxPowers

+1

@MaxPowers Wissen Sie, was Sie in Windows schreiben sollten? – Yaeli778

1

Unter Windows kann diese Arbeit:

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

Hey du bist die Antwort von @MaxPowers kopiert und posten – Dilip