Comment supprimer la sortie dans IPython Notebook?

113

Comment la sortie peut-elle stdoutêtre supprimée?

Un point-virgule peut être utilisé pour supprimer l'affichage des objets renvoyés, par exemple

>>> 1+1
2

>>> 1+1;   # No output!

Cependant, une fonction qui imprime sur stdout n'est pas affectée par le point-virgule.

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

>>> MyFunction()
Calculating values...

Comment la sortie de print/ MyFunctionpeut -elle être supprimée?

Zéro
la source
pour le noyau iruby, ajoutez simplement nil comme dernière ligne
frenesim

Réponses:

168

Ajouter %%capturecomme première ligne de la cellule. par exemple

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

Cela supprime simplement la sortie, mais la %%capturemagie peut être utilisée pour enregistrer la sortie dans une variable - consultez la documentation

Zéro
la source
2
Quelqu'un sait-il quel est le contraire de %% capture? Comme dans, comment arrêter la capture de %% dans une cellule, ou est-il activé jusqu'à la fin de la cellule?
David Parks
2
Il est bon de savoir qu'il n'est %%captureactivé que jusqu'à la fin de la cellule et qu'il doit apparaître avant tout code dans la cellule. (Il semble donc qu'il n'y ait pas de moyen de détacher dans une cellule.)
Arel
La discussion d'ICYMI, @David Parks et @ Arel est couverte par la réponse de @ gwd2 sur cette page à propos de l'utilisation que with io.capture_output() as captured:vous pouvez affiner dans une cellule pour capturer uniquement ce qui est exécuté dans ce withcontexte.
Wayne le
Notez que cela ne fonctionne que pour les noyaux Python (par exemple pas R).
Max Ghenis le
90

Supprimer la sortie

Mettez un ;à la fin d'une ligne pour supprimer l'impression de la sortie [ Référence ].

Farhad Maleki
la source
5
Ce n'est pas le cas pour un code dans une forboucle. Des idées? Je veux uniquement supprimer la sortie de certaines lignes de code dans la cellule, pas toutes les lignes. Merci
Confondé
16

(crédit: https://stackoverflow.com/a/23611571/389812 )

Vous pouvez utiliser io.capture_output :

from IPython.utils import io

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

pour supprimer (par exemple capturer) stdout et stderr pour ces lignes dans le with-statement.

gdw2
la source
Merci beaucoup, cela me rendait fou - j'ai une fonction de démarrage que j'exécute à chaque fois que j'ouvre un ordinateur portable qui appelle %autosaveet que je souhaite supprimer sa sortie. Je pensais que ce serait simple - mais bizarre, contextlib.redirect_stdoutet les sys.stdout = open(os.devnull, 'w')deux échouent (finissent par imprimer une ligne vierge supplémentaire). Cela devrait être la réponse acceptée.
Luke Davis
1
C'était ma réponse préférée, car on peut supprimer une partie de la sortie dans une cellule sans la supprimer entièrement.
Wolpertinger
-5

Si quelqu'un souhaite effacer toutes les sorties:

  1. Aller à la cellule
  2. Aller à toutes les sorties

Ensuite, choisissez l'option qui vous convient.

Yuqin Peng
la source