Wie unterdrücken Sie die Ausgabe in IPython Notebook?


111

Wie kann die Ausgabe stdoutunterdrückt werden?

Ein Semikolon kann beispielsweise verwendet werden, um die Anzeige zurückgegebener Objekte zu unterdrücken

>>> 1+1
2

>>> 1+1;   # No output!

Eine Funktion, die auf stdout gedruckt wird, ist jedoch vom Semikolon nicht betroffen.

>>> print('Hello!')
Hello!

>>> MyFunction()
Calculating values...

Wie kann die Ausgabe von print/ MyFunctionunterdrückt werden?


für iruby kernel einfach nil als letzte zeile hinzufügen
frenesim

Antworten:


165

Fügen Sie %%captureals die erste Zeile der Zelle. z.B

%%capture
print('Hello')
MyFunction()

Dadurch wird die Ausgabe einfach verworfen, aber die %%captureMagie kann verwendet werden, um die Ausgabe in einer Variablen zu speichern - konsultieren Sie die Dokumente


2
Weiß jemand, was das Gegenteil von %% Capture ist? Wie stoppen Sie wie in %% Capture innerhalb einer Zelle oder ist es bis zum Ende der Zelle aktiviert?
David Parks

2
Gut zu wissen ist, dass %%capturees nur bis zum Ende der Zelle aktiviert ist und vor jedem Code in der Zelle erscheinen muss. (Es scheint also, dass es keine Möglichkeit gibt, innerhalb einer Zelle zu erfassen.)
Arel

Die Diskussion von ICYMI, @David Parks und @ Arel wird in der Antwort von @ gwd2 auf dieser Seite über die Verwendung with io.capture_output() as captured:der Feinabstimmung innerhalb einer Zelle behandelt, um nur das zu erfassen, was in diesem withKontext ausgeführt wird.
Wayne

Beachten Sie, dass dies nur für Python-Kernel funktioniert (z. B. nicht für R).
Max Ghenis

90

Ausgabe unterdrücken

Setzen Sie ein ;am Ende einer Zeile, um das Drucken der Ausgabe zu unterdrücken [ Referenz ].


4
Dies gilt nicht für einen Code innerhalb einer forSchleife. Irgendwelche Ideen? Ich möchte nur die Ausgabe bestimmter Codezeilen in der Zelle unterdrücken, nicht alle Zeilen. Danke
Verwirrt

16

(Gutschrift: https://stackoverflow.com/a/23611571/389812 )

Sie könnten io.capture_output verwenden :

from IPython.utils import io

with io.capture_output() as captured:
    MyFunction()

stdout und stderr für diese Zeilen innerhalb der zu unterdrücken (z. B. zu erfassen) with-statement.


Vielen Dank, das hat mich verrückt gemacht - ich habe eine Startfunktion, die ich jedes Mal ausführe, wenn ich ein Notebook öffne, das anruft %autosave, und dessen Ausgabe unterdrücken wollte. Ich dachte, es wäre einfach - aber seltsam, contextlib.redirect_stdoutund sys.stdout = open(os.devnull, 'w')beide scheitern (am Ende wird eine zusätzliche leere Zeile gedruckt). Dies sollte die akzeptierte Antwort sein.
Luke Davis

1
Dies war meine Lieblingsantwort, weil man einen Teil der Ausgabe in einer Zelle unterdrücken kann, ohne alles zu unterdrücken.
Wolpertinger

-5

Wenn jemand daran interessiert ist, alle Ausgaben zu löschen:

  1. Gehe zur Zelle
  2. Gehen Sie zu Alle Ausgaben

Wählen Sie dann die gewünschte Option.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.