nbstripout.py
59 lines
| 1.5 KiB
| text/x-python
|
PythonLexer
Takafumi Arakaki
|
r7872 | #!/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() | ||||