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?

Null
quelle
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

Null
quelle
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 ].

Farhad Maleki
quelle
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.

gdw2
quelle
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.

Yuqin Peng
quelle