Как очистить вывод IPython Notebook во всех ячейках от терминала Linux?

У меня проблема, когда вывод из ноутбука очень длинный, и он сохраняется в ноутбуке, в любое время, когда я хочу снова открыть этот конкретный ноутбук, браузер выходит из строя и не может отобразиться правильно.

Чтобы исправить это, я должен открыть его с помощью текстового редактора и удалить весь вывод из этой ячейки, вызвав проблему.

Интересно, есть ли способ очистить весь вывод от ноутбука, чтобы можно было снова открыть его без проблем. Я хочу удалить все выходные данные, так как удаление определенного кажется более сложным.

Ответ 1

--ClearOutputPreprocessor.enabled=True

Теперь для этого есть встроенная опция командной строки:

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

Или в другой файл с именем NotebookNoOut.ipynb:

jupyter nbconvert --ClearOutputPreprocessor.enabled=True \
  --to notebook --output=NotebookNoOut Notebook.ipynb

jupyter nbconvert --help также документирует параметр --clear-output, но по некоторым причинам он не работает.

Протестировано в Jupyter 4.4.0, ноутбук == 5.7.6.

Ответ 2

Используйте clean_ipynb, который не только очищает вывод ноутбука, но также может очищать код.

Установить по pip install clean_ipynb

Запуск от clean_ipynb hello.ipynb

Ответ 3

Если вы создаете файл .gitattributes file, вы можете запустить фильтр для определенных файлов перед их добавлением в git. Это оставит исходный файл на диске как есть, но зафиксирует "очищенную" версию.

Чтобы это работало, добавьте это в свой локальный .git/config или глобальный ~/.gitconfig:

[filter "strip-notebook-output"]
    clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR"

Затем создайте файл .gitattributes в своем каталоге с записными книжками, с этим Содержание:

*.ipynb filter=strip-notebook-output

Как это работает:

  • Атрибут указывает git запускать действие фильтра clean для каждого файла записной книжки перед добавлением его в индекс (подготовка).
  • Этот фильтр - наш друг nbconvert, он настроен на чтение из stdin, запись в stdout, удаление вывода и разговор только тогда, когда ему есть что сказать.
  • Когда файл извлекается из индекса, запускается действие фильтра smudge, но это запрет, поскольку мы его не указали. Вы можете запустить свою записную книжку здесь, чтобы воссоздать вывод (nbconvert --execute).
  • Обратите внимание, что если фильтр как-то не работает, файл будет размещен не преобразованным.

Моя единственная незначительная неприятность в этом процессе - это то, что я могу совершить .gitattributes, но я должен сказать своим коллегам обновить их .git/config.

Если вам нужна более хакерская, но гораздо более быстрая версия, попробуйте JQ:

  clean = "jq '.cells[].outputs = [] | .cells[].execution_count = null | .'"

Ответ 4

Использовать --ClearOutputPreprocessor.enabled = True и - clear-output

Следуя этой команде:

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --clear-output *.ipynb