Come si sopprime l'output in IPython Notebook?


113

Come si può stdoutsopprimere l' output ?

Un punto e virgola può essere utilizzato per sopprimere la visualizzazione degli oggetti restituiti, ad esempio

>>> 1+1
2

>>> 1+1;   # No output!

Tuttavia, una funzione che stampa su stdout non è influenzata dal punto e virgola.

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

>>> MyFunction()
Calculating values...

Come si può sopprimere l'output da print/ MyFunction?


per il kernel iruby basta aggiungere nil come ultima riga
frenesim

Risposte:


167

Aggiungi %%capturecome prima riga della cella. per esempio

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

Questo scarta semplicemente l'output, ma la %%capturemagia può essere usata per salvare l'output in una variabile - consulta la documentazione


2
Qualcuno sa qual è l'opposto di %% capture? Come in, come si interrompe l'acquisizione di %% all'interno di una cella o è abilitata fino alla fine della cella?
David Parks,

2
La cosa buona da sapere è che %%captureè abilitato solo fino alla fine della cella e deve apparire prima di qualsiasi codice nella cella. (Quindi sembra non ci sia un modo per sbloccare all'interno di una cella.)
Arel

La discussione di ICYMI, @David Parks e @ Arel è coperta dalla risposta di @ gwd2 in questa pagina sull'uso with io.capture_output() as captured:che puoi mettere a punto all'interno di una cella per catturare solo ciò che viene eseguito in quel withcontesto.
Wayne,

Nota che funziona solo per i kernel Python (ad esempio, non R).
Max Ghenis,

90

Sopprimi output

Mettere un ;alla fine di una riga per sopprimere la stampa dell'output [ Riferimento ].


4
Questo non per un codice all'interno di un forciclo. Qualche idea? Voglio solo sopprimere l'output di particolari righe di codice nella cella, non tutte le righe. Grazie
Confuso

16

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

Puoi usare io.capture_output :

from IPython.utils import io

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

per sopprimere (ad esempio, catturare) stdout e stderr per quelle righe all'interno del file with-statement.


Grazie mille, questo mi stava facendo impazzire: ho una funzione di avvio che eseguo ogni volta che apro un notebook che chiama %autosavee volevo sopprimere il suo output. Ho pensato che sarebbe stato semplice, ma stranamente, contextlib.redirect_stdouted sys.stdout = open(os.devnull, 'w')entrambi falliscono (finiscono per stampare una riga vuota in più). Questa dovrebbe essere la risposta accettata.
Luke Davis

1
Questa era la mia risposta preferita, perché si può sopprimere parte dell'output in una cella senza sopprimerlo tutto.
Wolpertinger

-5

Se qualcuno è interessato a cancellare tutti gli output:

  1. Vai alla cella
  2. Vai a Tutti gli output

Quindi scegli l'opzione che preferisci.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.