##// END OF EJS Templates
add demo notebook for %%capture
add demo notebook for %%capture

File last commit:

r7326:6897c095
r7326:6897c095
Show More
Capturing Output.ipynb
130 lines | 2.7 KiB | text/plain | TextLexer

Capturing Output with %%capture

One of IPython's new cell magics is %%capture, which captures stdout/err for a cell, and discards them or stores them in variables in your namespace.

In [ ]:
import sys

By default, it just swallows it up. This is a simple way to suppress unwanted output.

In [ ]:
%%capture
print 'hi, stdout'
print >> sys.stderr, 'hi, stderr'

If you specify -o or -e, then stdout and/or stderr will be stored in those variables in your namespace.

In [ ]:
%%capture -o my_stdout
print 'hi, stdout'
print >> sys.stderr, 'hi, stderr'
In [ ]:
my_stdout
In [ ]:
%%capture -o my_stdout2 -e my_stderr
print 'hi again, stdout'
print >> sys.stderr, 'hi there, stderr'
In [ ]:
sys.stdout.write(my_stdout2)
sys.stderr.write(my_stderr)

%%capture only captures stdout/err, not displaypub, so you can still do plots and use the display protocol inside %%capture

In [ ]:
%pylab inline
In [ ]:
%%capture -o wontshutup

print "setting up X"
x = np.linspace(0,5,1000)
print "step 2: constructing y-data"
y = np.sin(x)
print "step 3: display info about y"
plt.plot(x,y)
print "okay, I'm done now"
In [ ]:
print wontshutup