你如何抑制IPython Notebook中的输出?

Zer*_*ero 87 ipython-notebook

如何stdout抑制输出?

例如,分号可用于抑制返回对象的显示

>>> 1+1
2

>>> 1+1;   # No output!
Run Code Online (Sandbox Code Playgroud)

但是,打印到stdout的函数不受分号影响.

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

>>> MyFunction()
Calculating values...
Run Code Online (Sandbox Code Playgroud)

如何才能从输出print/ MyFunction被抑制?

Zer*_*ero 129

添加%%capture为单元格的第一行.例如

%%capture
print('Hello')
MyFunction()
Run Code Online (Sandbox Code Playgroud)

这只是丢弃输出,但%%capture可以使用魔法将输出保存到变量 - 请参阅文档

  • 它不会丢弃警告,在我的例子中,我使用 tensorflow.keras 并获取它们的警告。 (3认同)
  • 有人知道%% capture的对立面吗?在这种情况下,如何停止单元格内的%% capture,还是在单元格结束之前启用它? (2认同)
  • 要知道的是,“ %% capture”仅在单元格结束之前才启用,并且必须出现在单元格中的任何代码之前。(因此,似乎没有办法在一个单元中进行捕获。) (2认同)
  • 呃,也许这改变了:UsageError: Line magic function `%%capture` not found。 (2认同)

Far*_*eki 68

抑制输出

放在;一行的末尾以禁止打印输出[ 参考 ].

  • 这不适用于“for”循环内的代码。有任何想法吗?我只想抑制单元格中特定代码行的输出,而不是所有行。谢谢 (7认同)
  • 你没读过这个问题吗,他明确表示他想要别的东西 (4认同)
  • 让情节仍然出现。完善! (3认同)
  • 此方法不适用于 jupyter Notebook 上的“print()”。然而,像“1+1;”这样的代码是有效的。 (3认同)
  • 也不适用于某些第三方组件;它似乎只抑制本机 python 标准输出。 (2认同)

gdw*_*dw2 7

(积分:https : //stackoverflow.com/a/23611571/389812

您可以使用io.capture_output

from IPython.utils import io

with io.capture_output() as captured:
    MyFunction()
Run Code Online (Sandbox Code Playgroud)

禁止(例如捕获)stdout和stderr来执行这些操作with-statement

  • 这是我最喜欢的答案,因为可以抑制单元格中的“某些”输出,而无需抑制全部输出。 (4认同)