¿Cómo se suprime la salida en IPython Notebook?

113

¿Cómo se stdoutpuede suprimir la salida ?

Se puede utilizar un punto y coma para suprimir la visualización de los objetos devueltos, por ejemplo

>>> 1+1
2

>>> 1+1;   # No output!

Sin embargo, una función que imprime en stdout no se ve afectada por el punto y coma.

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

>>> MyFunction()
Calculating values...

¿Cómo se puede suprimir la salida de print/ MyFunction?

Cero
fuente
para el kernel de iruby solo agregue nil como la última línea
frenesim

Respuestas:

167

Agregue %%capturecomo la primera línea de la celda. p.ej

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

Esto simplemente descarta la salida, pero la %%capturemagia se puede usar para guardar la salida en una variable; consulte los documentos

Cero
fuente
2
¿Alguien sabe qué es lo opuesto a %% capture? Como en, ¿cómo se detiene la captura %% dentro de una celda, o está habilitada hasta el final de la celda?
David Parks
2
Es bueno saber que %%capturesolo está habilitado hasta el final de la celda y debe aparecer antes de cualquier código en la celda. (Por lo tanto, parece que no hay forma de desencadenar dentro de una celda)
Arel
La discusión de ICYMI, @David Parks y @ Arel está cubierta por la respuesta de @ gwd2 en esta página sobre el uso with io.capture_output() as captured:que puede ajustar dentro de una celda para capturar solo lo que se ejecuta en ese withcontexto.
Wayne
Tenga en cuenta que esto solo funciona para núcleos de Python (por ejemplo, no R).
Max Ghenis
90

Suprimir salida

Ponga ;al final de una línea para suprimir la impresión de la salida [ Referencia ].

Farhad Maleki
fuente
4
Esto no ocurre con un código dentro de un forbucle. ¿Algunas ideas? Solo quiero suprimir la salida de líneas particulares de código en la celda, no todas las líneas. Gracias
Confundido el
16

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

Podría usar io.capture_output :

from IPython.utils import io

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

para suprimir (por ejemplo, capturar) stdout y stderr para esas líneas dentro de with-statement.

gdw2
fuente
Muchas gracias, esto me estaba volviendo loco: tengo una función de inicio que ejecuto cada vez que abro una computadora portátil que llama %autosavey quería suprimir su salida. Pensé que sería simple, pero extrañamente, contextlib.redirect_stdouty sys.stdout = open(os.devnull, 'w')ambos fallan (terminan imprimiendo una línea en blanco adicional). Esta debería ser la respuesta aceptada.
Luke Davis
1
Esta fue mi respuesta favorita, porque se puede suprimir parte de la salida en una celda sin suprimirla por completo.
Wolpertinger
-5

Si alguien está interesado en borrar todos los resultados:

  1. Ir a la celda
  2. Ir a todas las salidas

Luego, elija la opción que desee.

Yuqin Peng
fuente