如何通过代码将Jupyter笔记本保存为HTML?

13

我有一个Jupyter Notebook程序,它可以为我进行分析。在它运行之后,我想将它保存为HTML以便以后查看。(然后我可以更改输入数据文件以对其他数据进行分析。)

通常情况下,我是通过手动操作来完成这个过程的。大致上会像这样

enter image description here

但是这对我来说感觉非常繁琐。所以我想知道是否有任何代码可以帮我完成这个操作?也许像这样

%save_html
# or with a file_name
%save_html file_name
注意:我已经想出了解决方法。但是我没有在搜索中找到太多信息,所以我在这里发布它,可能会帮助其他遇到相同问题的人。我将把我的解决方案作为答案发布。
5个回答

22

我会自己回答。

from IPython.display import Javascript
from nbconvert import HTMLExporter

def save_notebook():
    display(
        Javascript("IPython.notebook.save_notebook()"),
        include=['application/javascript']
    )

def output_HTML(read_file, output_file):
    import codecs
    import nbformat
    exporter = HTMLExporter()
    # read_file is '.ipynb', output_file is '.html'
    output_notebook = nbformat.read(read_file, as_version=4)
    output, resources = exporter.from_notebook_node(output_notebook)
    codecs.open(output_file, 'w', encoding='utf-8').write(output)

在笔记本的最后一个单元格,类似于:
import time

save_notebook()
time.sleep(3)
current_file = 'GMM.ipynb'
output_file = 'output_file.html'
output_HTML(current_file, output_file)

2
在使用save_notebook()之前,您忘记从Ipython.display导入Javascript了。 - Alberto A
from IPython.display import Javascript - KeepLearning

5

在同一目录下,您应该能够找到一个脚本,其中包含jupyter-notebook.exe文件。它的名称是jupyter-nbconvert.exe。像这样运行它:

./jupyter-nbconvert.exe --to html 'path/to/nb.ipynb'`

Docs


3

首先打开控制台并进入笔记本所在的目录。
第二步输入以下命令:

ipython nbconvert --to HTML your_notebook.ipynb

接下来,你将会得到一个名为“your_notebook.html”的新文件。就这样。

你可以在这里查看更多信息。


3

执行此代码片段即可

!!jupyter nbconvert *.ipynb

1
这是一个很好的解决方案。我使用 !!jupyter nbconvert MY_FILENAME.ipynb 只转换一个笔记本。请注意,它会输出 MY_FILENAME.html。似乎没有一种方法可以指定输出文件名,所以在生成 HTML 文件后,我使用 os.rename('MY_FILENAME.html', 'new_path/new_name.html') 进行重命名。 - MD004
1
从哪里开始?在笔记本内还是从控制台开始? - Rory L
2
在jupyter笔记本的代码单元格中使用!!jupyter nbconvert MY_FILENAME.ipynb --to html。在运行之前确保保存笔记本。 - MD004

0
如果你想要一个纯粹基于代码的解决方案,在笔记本中执行,你可以使用以下简短的代码片段,它将把你的文件命名为'test_1'。
a = 1
command = f'jupyter nbconvert Untitled.ipynb --output test_{a}.html'
subprocess.call(command)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接