IPython Notebook'ta çıktıyı nasıl bastırırsınız?


113

Çıktı nasıl stdoutbastırılabilir?

Bir noktalı virgül, döndürülen nesnelerin görüntülenmesini engellemek için kullanılabilir, örneğin

>>> 1+1
2

>>> 1+1;   # No output!

Bununla birlikte, stdout'a yazdıran bir işlev noktalı virgülden etkilenmez.

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

>>> MyFunction()
Calculating values...

Çıktı nasıl bastırılabilir print/ MyFunctionbastırılabilir?


iruby kernel nil için son satır olarak ekleyin
frenesim

Yanıtlar:


169

%%captureHücrenin ilk satırı olarak ekleyin . Örneğin

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

Bu basitçe çıktıyı atar, ancak %%capturesihir çıktıyı bir değişkene kaydetmek için kullanılabilir - dokümanlara bakın


2
%% yakalamanın tersinin ne olduğunu bilen var mı? Olduğu gibi, bir hücre içinde %% yakalamayı nasıl durdurursunuz veya hücrenin sonuna kadar etkinleştirilir mi?
David Parks

2
Bilmeniz gereken iyi bir şey %%capture, yalnızca hücrenin sonuna kadar etkinleştirilir ve hücredeki herhangi bir koddan önce görünmesi gerekir. (Öyleyse bir hücre içinde ele geçirmenin bir yolu yok gibi görünüyor.)
Arel

ICYMI, @David Parks ve @ Arel'in tartışması, bu sayfadaki @ gwd2'nin with io.capture_output() as captured:, yalnızca bu withbağlamda çalıştırılanları yakalamak için bir hücre içinde ince ayar yapabileceğinizle ilgili yanıtında yer almaktadır .
Wayne

Bunun yalnızca Python çekirdekleri için çalıştığını unutmayın (örneğin, R için değil).
Max Ghenis

91

Çıkışı bastır

;[ Referans ] çıktısının yazdırılmasını engellemek için satırın sonuna bir koyun .


5
Bu, fordöngü içindeki bir kod için değildir . Herhangi bir fikir? Tüm satırları değil, yalnızca hücredeki belirli kod satırlarından gelen çıktıları bastırmak istiyorum. Teşekkür
Afallamış

16

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

İo.capture_output'u kullanabilirsiniz :

from IPython.utils import io

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

içindeki satırlar için stdout ve stderr'i bastırmak (örneğin yakalama) için with-statement.


Çok teşekkürler, bu beni çılgına çeviriyordu - arayan bir not defterini her açtığımda çalıştırdığım %autosaveve çıktısını bastırmak istediğim bir başlangıç ​​işlevim var . Basit olacağını düşündüm - ama tuhaf bir şekilde contextlib.redirect_stdoutve sys.stdout = open(os.devnull, 'w')her ikisi de başarısız oluyor (sonunda fazladan boş bir satır yazdırıyor). Kabul edilen cevap bu olmalıdır.
Luke Davis

1
Biri bastırmak Bunun nedeni, benim favori cevaptı bazı hepsini değil bastırmak olmayan bir hücrede çıktı.
Wolpertinger

-5

Herhangi biri tüm çıktıları temizlemekle ilgileniyorsa:

  1. Git Cell
  2. Tüm Çıktıya Git

Ardından hangi seçeneği beğenirseniz seçin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.