Як ви пригнічуєте вихід у зошиті IPython?


113

Як можна stdoutпридушити результати?

Напівколону можна використовувати, наприклад, для придушення відображення повернених об'єктів

>>> 1+1
2

>>> 1+1;   # No output!

Однак на функцію, яка друкує stdout, не впливає напівкрапка.

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

>>> MyFunction()
Calculating values...

Як можна придушити вихід з print/ MyFunctionза?


для ядра iruby просто додайте nil як останній рядок
frenesim

Відповіді:


167

Додайте %%captureяк перший рядок комірки. напр

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

Це просто відкидає вихід, але %%captureмагія може бути використана для збереження результату до змінної - проконсультуйтеся з документами


2
Хтось знає, що протилежне захопленню %%? Як у, як зупинити захоплення %% у комірці, чи це ввімкнено до кінця комірки?
Девід Паркс

2
Добре знати, %%captureце ввімкнено лише до кінця комірки, і воно повинно з’явитися перед будь-яким кодом у комірці. (Отож, здається, немає способу зняти всередину клітини.)
Арел

Обговорення ICYMI, @David Parks та @ Arel висвітлюється відповіддю @ gwd2 на цій сторінці про те, що with io.capture_output() as captured:ви можете точно налаштувати всередині клітинки, щоб зафіксувати лише те, що виконується в цьому withконтексті.
Уейн

Зверніть увагу, це працює лише для ядер Python (наприклад, не R).
Макс Геніс

90

Придушити вихід

Помістіть a ;в кінці рядка, щоб придушити друк результатів [ Посилання ].


4
Це не стосується коду всередині forциклу. Якісь ідеї? Я хочу лише придушити вихід з окремих рядків коду в комірці, а не з усіх рядків. Спасибі
посоромиться

16

(кредит: https://stackoverflow.com/a/23611571/389812 )

Ви можете використовувати io.capture_output :

from IPython.utils import io

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

придушити (наприклад, захоплення) stdout та stderr для цих рядків у межах with-statement.


Велике спасибі, це зводило мене з розуму - у мене є функція запуску, яку я запускаю щоразу, коли відкриваю ноутбук, який дзвонить %autosave, і хотів придушити його вихід. Думав, що це буде просто - але дивно, contextlib.redirect_stdoutі sys.stdout = open(os.devnull, 'w')обидва не вдається (в кінцевому підсумку надрукуйте додатковий порожній рядок). Це має бути прийнятою відповіддю.
Люк Девіс

1
Це була моя улюблена відповідь, тому що можна придушити деякий вихід у комірці, не придушуючи всього цього.
Wolpertinger

-5

Якщо хтось зацікавлений у очищенні всіх результатів:

  1. Перейдіть до Cell
  2. Перейдіть на " Всі результати"

Потім виберіть той варіант, який вам подобається.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.