Как сохранить текущее состояние ноутбука в JupyterLab

#python #html #jupyter-lab #nbconvert

#python #HTML #jupyter-lab #nbconvert

Вопрос:

Я хотел бы экспортировать записную книжку JupyterLab (не записную книжку Jupyter) в HTML.

Я использую следующий код внутри самого ноутбука, который правильно экспортирует ноутбук:

os.popen('jupyter nbconvert current_notebook.ipynb --to html').read()

Однако nbconvert получает не текущую записную книжку, а последнее сохраненное состояние записной книжки на диске.

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

Я пытаюсь использовать следующий код:

 %%javascript
IPython.notebook.save_notebook()
 

Но, по-видимому, JupyterLab не поддерживает JS API, поэтому он возвращает следующее сообщение:

Javascript Error: IPython is not defined

Знаете ли вы способ сохранить текущее состояние ноутбука перед его экспортом?

Ответ №1:

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

 import os
%notebook -e test.ipynb
os.system('jupyter nbconvert --to html test.ipynb')
 

Это даст test.html файл.

Или вы можете использовать javascript и HTML для эмуляции события CTRL s,

 from IPython.display import display, HTML

### emulate Ctrl   s
script = """
this.nextElementSibling.focus();
this.dispatchEvent(new KeyboardEvent('keydown', {key:'s', keyCode: 83, ctrlKey: true}));
"""
display(HTML((
    '<input style="width:0;height:0;border:0">'
).format(script)))

import os

os.system('jupyter nbconvert --to html test.ipynb') # here, test is the name of your notebook
 

Теперь keyCode: 83 эта строка может меняться в зависимости от вашей ОС. Если вы находитесь в Windows, должно хватить 83, иначе вам, возможно, придется проверять код ключа на ‘s’, самый простой способ, который я нашел, — перейти на этот веб-сайт http://keycode.info / и введите s .

ссылка: https://unixpapa.com/js/key.html