diff --git a/docs/examples/notebooks/Capturing Output.ipynb b/docs/examples/notebooks/Capturing Output.ipynb new file mode 100644 index 0000000..c9d9805 --- /dev/null +++ b/docs/examples/notebooks/Capturing Output.ipynb @@ -0,0 +1,131 @@ +{ + "metadata": { + "name": "Capturing Output" + }, + "nbformat": 3, + "worksheets": [ + { + "cells": [ + { + "cell_type": "heading", + "level": 1, + "source": [ + "Capturing Output with %%capture" + ] + }, + { + "cell_type": "markdown", + "source": [ + "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." + ] + }, + { + "cell_type": "code", + "input": [ + "import sys" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "By default, it just swallows it up. This is a simple way to suppress unwanted output." + ] + }, + { + "cell_type": "code", + "input": [ + "%%capture", + "print 'hi, stdout'", + "print >> sys.stderr, 'hi, stderr'" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "If you specify `-o` or `-e`, then stdout and/or stderr will be stored in those variables in your namespace." + ] + }, + { + "cell_type": "code", + "input": [ + "%%capture -o my_stdout", + "print 'hi, stdout'", + "print >> sys.stderr, 'hi, stderr'" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "code", + "input": [ + "my_stdout" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "code", + "input": [ + "%%capture -o my_stdout2 -e my_stderr", + "print 'hi again, stdout'", + "print >> sys.stderr, 'hi there, stderr'" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "code", + "input": [ + "sys.stdout.write(my_stdout2)", + "sys.stderr.write(my_stderr)" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "`%%capture` only captures stdout/err, not displaypub, so you can still do plots and use the display protocol inside %%capture" + ] + }, + { + "cell_type": "code", + "input": [ + "%pylab inline" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "code", + "input": [ + "%%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\"" + ], + "language": "python", + "outputs": [] + }, + { + "cell_type": "code", + "input": [ + "print wontshutup" + ], + "language": "python", + "outputs": [] + } + ] + } + ] +} \ No newline at end of file