'How can I open an IPython notebook without the output?

I have an IPython notebook where I've accidentally dumped a huge output (15 MB) that crashed the notebook. Now when I open the notebook and attempt to delete the troublesome cell, the notebook crashes again—thus preventing me from fixing the problem and restoring the notebook to stability.

The best fix I can think of is manually pasting the input cells to a new notebook, but is there a way to just open the notebook without any outputs?



Solution 1:[1]

you can use cli to clear outputs

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace Notebook.ipynb

Solution 2:[2]

If you are running jupyter 4.x, you will get some API deprecation warnings when running filmor's script. Although the script still works, I update the script a bit to remove the warnings.

#!/usr/bin/env python

def strip_output(nb):
    for cell in nb.cells:
        if hasattr(cell, "outputs"):
            cell.outputs = []
        if hasattr(cell, "prompt_number"):
            del cell["prompt_number"]


if __name__ == "__main__":
    from sys import stdin, stdout
    from nbformat import read, write

    nb = read(stdin, 4)
    strip_output(nb)
    write(nb, stdout, 4)
    stdout.write("\n")

Solution 3:[3]

As for later versions of jupyter, there is a Restart Kernel and Clear All Outputs... option that clears the outputs but also removed the variables.

Kernel Options

Solution 4:[4]

Here is a further modification from @Edward Fung's answer that will output the cleaned notebook to a new file rather than rely on stin and stout

from nbformat import read, write

def strip_output(nb):
    for cell in nb.cells:
        if hasattr(cell, "outputs"):
            cell.outputs = []
        if hasattr(cell, "prompt_number"):
            del cell["prompt_number"]

nb = read(open("my_notebook.ipynb"), 4)
strip_output(nb)
write(nb, open("my_notebook_cleaned.ipynb", "w"), 4)

Solution 5:[5]

Using the --ClearOutputPreprocessor, you can reduce the size of your notebook file due to the outputs.

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace sample.ipynb

Note that --clear-output is the broken command like below:

jupyter nbconvert --clear-output --inplace sample.ipynb

In my case, I tried to see the answer to this question, but I found out that it is a command that cannot remove output.

Solution 6:[6]

I am not able to post a commenet, so feel free to edit/move to @Shumaila Ahmed answer.

I had to use quotes on the file path, as:

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace 'Notebook.ipynb'

Works like charm on Ubuntu 21.04, thanks!

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Shumaila Ahmed
Solution 2 Community
Solution 3
Solution 4 wfgeo
Solution 5
Solution 6 Yuri Gelsleichter