I have a problem when the output from a notebook is really long and it's saved into the notebook, any time I want to open this particular notebook again the browser crashes and can't display correctly.
To fix this I have to open it with a text editor and delete all output from that cell causing the problem.
I wonder if there is a way to clean all output from the notebook so one can open it again without problem. I want to delete all output since deleting a specific one seems more troublesome.
When you have Jupyter notebook opened, you can do this by selecting the Cell -> All Output -> Clear menu item.
Jupyter Lesson 10: How to reset the Kernel (Clear all in memory objects and stop the code) If the notebook or your code is acting weird sometimes it is best to press the “RESET BUTTON”. Reseting the kernel clears all in memory objects and restarts your code from the very top.
IPython has a cell magic, %%capture , which captures the stdout/stderr of a cell. With this magic you can discard these streams or store them in a variable. By default, %%capture discards these streams. This is a simple way to suppress unwanted output.
Insert code cell above: ctrl + m + a. Insert code cell below: ctrl + m + b. Delete cell: ctrl + m + d.
nbconvert 6.0 should fix --clear-output
The option had been broken for a long time previously, bug report with merged patch: https://github.com/jupyter/nbconvert/issues/822
Usage should be for in-place operation:
jupyter nbconvert --clear-output --inplace my_notebook.ipynb
Or to save to another file called my_notebook_no_out.ipynb
:
jupyter nbconvert --clear-output \ --to notebook --output=my_notebook_no_out my_notebook.ipynb
This was brought to my attention by Harold in the comments.
Before nbconvert 6.0: --ClearOutputPreprocessor.enabled=True
Same usage as --clear-output
:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace my_notebook.ipynb jupyter nbconvert --ClearOutputPreprocessor.enabled=True \ --to notebook --output=my_notebook_no_out my_notebook.ipynb
Tested in Jupyter 4.4.0, notebook==5.7.6.
If you create a .gitattributes
file, you can run a filter over certain files before they are added to git. This will leave the original file on disk as-is, but commit the "cleaned" version.
For this to work, add this to your local .git/config
or global ~/.gitconfig
:
[filter "strip-notebook-output"] clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR"
Then create a .gitattributes
file in your directory with notebooks, with this content:
*.ipynb filter=strip-notebook-output
How this works:
clean
action on each notebook file before adding it to the index (staging).nbconvert
, set up to read from stdin, write to stdout, strip the output, and only speak when it has something important to say.smudge
action is run, but this is a no-op as we did not specify it. You could run your notebook here to re-create the output (nbconvert --execute
). My only minor gripe with this process is that I can commit .gitattributes
but I have to tell my co-workers to update their .git/config
.
If you want a hackier but much faster version, try JQ:
clean = "jq '.cells[].outputs = [] | .cells[].execution_count = null | .'"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With