🥧
【JupyterNotebook】.ipynbファイル保存時に.pyファイルを自動作成する
環境
JupyterNotebookのDockerコンテナを使用
macOS 10.15.6
手順
グローバル環境の設定が必要
コンソールを開きDockerコンテナに入った後、jupyter_notebook_config.pyを開く
cd /root/.jupyter/
vi jupyter_notebook_config.py
以下のサイトのExapleにある2つのソースコードをコピーして、下の方に貼り付ける
File save hooks - Jupyter Notebook 6.1.4 documentation
ファイルを保存した後、dockerコンテナを再起動する
適当なJupyterNotebookを開いて保存するとpythonファイルができていることを確かめる
.pyをpythonディレクトリ配下に保存する
このままだと.pyは.ipynbと同階層に保存される
pythonディレクトリ配下に保存して.pyファイルをまとめたかったので、script_post_save
関数の一部を以下を修正する
修正前
script_fname = base + resources.get('output_extension', '.txt')
log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir))
with io.open(script_fname, 'w', encoding='utf-8') as f:
f.write(script)
script_fname
に作られる.pyのパスが入っているので新しいパスにして保存させる
修正後
script_fname = base + resources.get('output_extension', '.txt')
log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir))
# ここから
dir_path = script_fname[:script_fname.rfind('/')] + '/python'
os.makedirs(dir_path, exist_ok=True)
py_file_path = dir_path + script_fname[script_fname.rfind('/'):]
with io.open(py_file_path, 'w', encoding='utf-8') as f:
f.write(script)
# ここまで
Discussion