How can I open an IPython notebook without the output?

前端 未结 4 963
感情败类
感情败类 2021-02-01 07:25

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 troubleso

相关标签:
4条回答
  • 2021-02-01 07:37

    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.

    0 讨论(0)
  • 2021-02-01 07:45

    There is this nice snippet (that I use as a git commit hook) to strip the output of an ipython notebook:

    #!/usr/bin/env python
    
    def strip_output(nb):
        for ws in nb.worksheets:
            for cell in ws.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 IPython.nbformat.current import read, write
    
        nb = read(stdin, "ipynb")
        strip_output(nb)
        write(nb, stdout, "ipynb")
        stdout.write("\n")
    

    You can easily make it a bit nicer to use, currently you'd have to call it as

    strip_output.py < my_notebook.ipynb > my_notebook_stripped.ipynb
    
    0 讨论(0)
  • 2021-02-01 07:54

    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")
    
    0 讨论(0)
  • 2021-02-01 07:58

    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)
    
    0 讨论(0)
提交回复
热议问题