##// END OF EJS Templates
python3 syntax fixes on various scripts...
python3 syntax fixes on various scripts revealed by running tools/build_relese

File last commit:

r19627:b2cae5dc
r20277:6ceb4492
Show More
Capturing Output.ipynb
486 lines | 18.9 KiB | text/plain | TextLexer

Capturing Output With %%capture

IPython has a [cell magic](Cell Magics.ipynb), %%capture, which captures the stdout/stderr of a cell. With this magic you can discard these streams or store them in a variable.

In [9]:
from __future__ import print_function
import sys

By default, %%capture discards these streams. This is a simple way to suppress unwanted output.

In [10]:
%%capture
print('hi, stdout')
print('hi, stderr', file=sys.stderr)

If you specify a name, then stdout/stderr will be stored in an object in your namespace.

In [11]:
%%capture captured
print('hi, stdout')
print('hi, stderr', file=sys.stderr)
In [12]:
captured
Out[12]:
<IPython.utils.capture.CapturedIO at 0x1076c9310>

Calling the object writes the output to stdout/stderr as appropriate.

In [13]:
captured()
hi, stdout
hi, stderr
In [14]:
captured.stdout
Out[14]:
'hi, stdout\n'
In [15]:
captured.stderr
Out[15]:
'hi, stderr\n'

%%capture grabs all output types, not just stdout/stderr, so you can do plots and use IPython's display system inside %%capture

In [16]:
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
In [17]:
%%capture 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 [18]:
wontshutup()
setting up X
step 2: constructing y-data
step 3: display info about y
okay, I'm done now
No description has been provided for this image

And you can selectively disable capturing stdout, stderr or rich display, by passing --no-stdout, --no-stderr and --no-display

In [19]:
%%capture cap --no-stderr
print('hi, stdout')
print("hello, stderr", file=sys.stderr)
hello, stderr
In [20]:
cap.stdout
Out[20]:
'hi, stdout\n'
In [21]:
cap.stderr
Out[21]:
''
In [22]:
cap.outputs
Out[22]:
[]