Как очистить содержимое ячейки кода из ноутбука Jupyter?

avatar
JesseC
8 августа 2021 в 18:52
51
1
1

Я работаю над серией блокнотов Jupyter для учебных целей. Эти тетради я хочу отдать ученикам, однако сначала хочу стереть содержимое ячеек кода (но не удалять сами ячейки!). Все дело в том, что ученики просматривают тетрадь и заполняют клетки.

Например, вот что я создаю:

teacher version

А вот что я хочу экспортировать для студентов:

student version

Есть много блокнотов, поэтому я хотел бы автоматизировать эту задачу. Я пробовал играть с jupyter nbconvert, но параметры по умолчанию (например, --no-input), похоже, не делают того, что я хочу. Мне действительно нужно погрузиться в мир шаблонов jinja или есть более простой способ?

Источник
krassowski
8 августа 2021 в 20:28
0

Блокноты — это просто файлы JSON, поэтому вы можете создать собственный скрипт на выбранном языке (я думаю, Python), который заменяет содержимое ячеек кода пустой строкой. Если вы застряли, пожалуйста, добавьте любые важные детали здесь и отметьте меня в комментарии.

JesseC
10 августа 2021 в 17:23
0

@krassowski, в конце концов, это то, что я сделал, но я нашел это довольно неудовлетворительным и ожидал, что nbconvert будет проще в использовании.

Ответы (1)

avatar
0x26res
22 декабря 2021 в 12:22
0

Это не обычный вариант использования, обычно люди хотят удалить вывод ячейки. Но вы можете написать код, похожий на ClearOutputPreprocessor:

def clear_inputs(notebook_file):
    with open(notebook_file) as fp:
        raw_notebook = nbformat.read(fp, as_version=4)

    for cell in raw_notebook.get("cells"):
        if cell.cell_type == "code":
            cell.source = []

    with open(notebook_file, "w") as fp:
        nbformat.write(raw_notebook, fp)