Como você suprime a saída no Notebook IPython?


113

Como a saída pode stdoutser suprimida?

Um ponto e vírgula pode ser usado para suprimir a exibição de objetos retornados, por exemplo

>>> 1+1
2

>>> 1+1;   # No output!

No entanto, uma função que imprime em stdout não é afetada pelo ponto-e-vírgula.

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

>>> MyFunction()
Calculating values...

Como pode a saída de print/ MyFunctionser suprimida?


para o kernel iruby basta adicionar nil como última linha
frenesim

Respostas:


167

Adicione %%capturecomo a primeira linha da célula. por exemplo

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

Isso simplesmente descarta a saída, mas a %%capturemágica pode ser usada para salvar a saída em uma variável - consulte a documentação


2
Alguém sabe qual é o oposto de %% capture? Como em, como você interrompe a captura %% dentro de uma célula, ou ela é ativada até o final da célula?
David Parks,

2
É bom saber que %%capturesó está habilitado até o final da célula e deve aparecer antes de qualquer código na célula. (Portanto, parece que não há uma maneira de cancelar a captura dentro de uma célula.)
Arel

A discussão de ICYMI, @David Parks e @ Arel é abordada pela resposta de @ gwd2 nesta página sobre como usar with io.capture_output() as captured:o ajuste fino dentro de uma célula para capturar apenas o que é executado naquele withcontexto.
Wayne

Observe que isso só funciona para kernels Python (por exemplo, não R).
Max Ghenis

90

Suprimir saída

Coloque um ;no final de uma linha para suprimir a impressão da saída [ Referência ].


4
Isso não acontece com um código dentro de um forloop. Alguma ideia? Desejo apenas suprimir a saída de linhas específicas de código na célula, não de todas as linhas. Obrigado
Confundido em

16

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

Você pode usar io.capture_output :

from IPython.utils import io

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

para suprimir (por exemplo, capturar) stdout e stderr para essas linhas dentro do with-statement.


Muito obrigado, isso estava me deixando louco - tenho uma função de inicialização que executo toda vez que abro um notebook que chama %autosavee queria suprimir sua saída. Achei que seria simples - mas estranhamente, contextlib.redirect_stdoute sys.stdout = open(os.devnull, 'w')ambos falham (acabam imprimindo uma linha em branco extra). Esta deve ser a resposta aceita.
Luke Davis

1
Essa foi minha resposta favorita, porque é possível suprimir parte da saída de uma célula sem suprimir tudo.
Wolpertinger

-5

Se alguém estiver interessado em limpar todas as saídas:

  1. Ir para a célula
  2. Ir para todas as saídas

Em seguida, escolha a opção de sua preferência.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.