Кажется, что ответ включает nbformat
, и он уже существует на этом сайте, но на вопрос, заданный на таком техническом языке, я думаю, что стоит упростить этот вопрос до моей простой английской версии sh, чтобы помочь / позволить другим узнать об этом (я должным образом проголосовал за другой ответ).
def perform_post_exec_cleanup(output_nb_name, tag_to_del='injected-parameters'):
import json
from traitlets.config import Config
from nbconvert import NotebookExporter
import nbformat
c = Config()
c.TagRemovePreprocessor.enabled=True # to enable the preprocessor
c.TagRemovePreprocessor.remove_cell_tags = [tag_to_del]
c.preprocessors = ['TagRemovePreprocessor'] # previously: c.NotebookExporter.preprocessors
nb_body, resources = NotebookExporter(config=c).from_filename(output_nb_name)
nbformat.write(nbformat.from_dict(json.loads(nb_body)), output_nb_name, 4)
Предостережения
Обычно такие преобразования записной книжки / удаление ячеек можно выполнить на месте в том же ноутбуке, в котором выполняется код удаления. НЕ в случае papermill - он НЕ будет работать из выходного блокнота, когда выполнение его кода контролируется с помощью функции papermill execute_notebook()
. Он должен запускаться на внешнем (контроллере) ноутбуке после того, как функция завершила или прервала свое выполнение. Поскольку выходная записная книжка была постепенно сохранена на диск во время процесса, если вы хотите убедиться, что ячейка injected-parameters
не сохраняется постоянно, вам необходимо безоговорочно запустить приведенный выше код очистки, даже если функция бумажной фабрики не работает, поэтому поместите его в свой finally
раздел try-except-finally
.
[на основе: Запустите препроцессор, используя nbconvert в качестве библиотеки ]