Как очистить вывод 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