1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

複数のJupyter notebookをまとめてhtmlファイルに変換する

Posted at

Jupyter notebookのipynbファイルが複数あって、それらをまとめてhtmlファイルに変換してから、一箇所にまとめたい場合に使えるスクリプトです。

ファイルが複数のフォルダにまたがって存在しても、再帰的にipynbファイルを検索して変換します。

まず結論から

以下のスクリプトを使って変換できます。

import shutil
from pathlib import Path
import subprocess

output_folder = "htmlファイルの保存先のフォルダパス"
notebook_folder = "ipynbファイルが保存されているフォルダのパス"

path_to_notebook_folder = Path(notebook_folder)
path_to_output_folder = Path(output_folder)

for path_to_ipynb in path_to_notebook_folder.rglob("*.ipynb"):
    print(str(path_to_ipynb))
    proc = subprocess.run(["jupyter", "nbconvert", "--to", "html", str(path_to_ipynb)], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    print(proc.stdout.decode("utf8"))
    print(proc.stderr.decode("utf8"))
    path_to_src_html = path_to_ipynb.with_suffix(".html")
    path_to_dest_html = path_to_output_folder.joinpath(path_to_src_html.name)
    shutil.move(str(path_to_src_html), str(path_to_dest_html))

コードについての説明

ファイルの再帰的検索

pathlib.Pathrglob("*.ipynb")によって、指定フォルダ以下のipynbファイルを再帰的に検索します。再帰的に検索したくない場合にはglob("*.ipynb")を使います。

for path_to_ipynb in path_to_notebook_folder.rglob("*.ipynb"):
    print(str(path_to_ipynb))

jupyter notebookのファイルをhtmlに変換

jupyter notebookのファイルをhtmlに変換するには、linuxコマンドとして

jupyter nbconvert --to html "ipynbファイルパス"

とします。

linuxコマンドをpythonで実行

linuxコマンドをpythonで実行するために、subprocess.runを使います。

subprocess.run(["jupyter", "nbconvert", "--to", "html", "ipynbファイルパス"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

pythonでファイルを移動

最後に、shutil.moveで生成したhtmlファイルを指定フォルダに移動します。

shutil.move(str(path_to_src_html), str(path_to_dest_html))
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?