|
|
#!/usr/bin/env python
|
|
|
|
|
|
"""
|
|
|
Clear outputs of IPython notebooks.
|
|
|
|
|
|
By default, it prints the notebooks without outputs into stdout.
|
|
|
When the --inplace option is given, all files will be overwritten.
|
|
|
|
|
|
"""
|
|
|
|
|
|
import sys
|
|
|
|
|
|
from IPython.nbformat import current as nbformat
|
|
|
|
|
|
|
|
|
def clear_outputs(nb):
|
|
|
"""Clear output of notebook `nb` INPLACE."""
|
|
|
for ws in nb.worksheets:
|
|
|
for cell in ws.cells:
|
|
|
cell.outputs = []
|
|
|
|
|
|
|
|
|
def stripoutput(inputs, inplace=False):
|
|
|
"""
|
|
|
Strip output of notebooks.
|
|
|
|
|
|
Parameters
|
|
|
----------
|
|
|
inputs : list of string
|
|
|
Path to the notebooks to be processed.
|
|
|
inplace : bool
|
|
|
If this is `True`, outputs in the input files will be deleted.
|
|
|
Default is `False`.
|
|
|
|
|
|
"""
|
|
|
for inpath in inputs:
|
|
|
with file(inpath) as fp:
|
|
|
nb = nbformat.read(fp, 'ipynb')
|
|
|
clear_outputs(nb)
|
|
|
if inplace:
|
|
|
with file(inpath, 'w') as fp:
|
|
|
nbformat.write(nb, fp, 'ipynb')
|
|
|
else:
|
|
|
nbformat.write(nb, sys.stdout, 'ipynb')
|
|
|
|
|
|
|
|
|
def main():
|
|
|
from argparse import ArgumentParser
|
|
|
parser = ArgumentParser(description=__doc__)
|
|
|
parser.add_argument('inputs', nargs='+', metavar='input',
|
|
|
help='Paths to notebook files.')
|
|
|
parser.add_argument('-i', '--inplace', default=False, action='store_true',
|
|
|
help='Overwrite existing notebook when given.')
|
|
|
args = parser.parse_args()
|
|
|
stripoutput(**vars(args))
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
main()
|
|
|
|