Как я могу открыть ноутбук IPython без вывода?
У меня есть IPython-ноутбук, где я случайно сбросил огромный выход (15 Мб), который разбил ноутбук. Теперь, когда я открываю ноутбук и пытаюсь удалить неприятную ячейку, ноутбук снова падает, что мешает мне устранить проблему и восстановить работоспособность ноутбука.
Лучшее решение, которое я могу придумать, - это вручную вставить ячейки ввода в новый ноутбук, но есть ли способ открыть ноутбук без каких-либо выходов?
Ответы
Ответ 1
Этот хороший сниппет (который я использую как git commit hook), чтобы удалить вывод из ноутбука ipython:
#!/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")
Вы можете легко сделать его немного приятнее в использовании, в настоящее время вам придется называть его
strip_output.py < my_notebook.ipynb > my_notebook_stripped.ipynb
Ответ 2
Если вы используете jupyter 4.x, вы получите предупреждения об отказе от API при запуске filmor script. Хотя script все еще работает, я немного обновляю script, чтобы удалить предупреждения.
#!/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")