TL;DR

pip install ipynb-path
import ipynb_path

# tokenでJupyterサーバーにログインできる場合:
print(ipynb_path.get())
# -> /path/to/this/notebook.ipynb

# もしくはパスワードが必要な場合:
print(ipynb_path.get(password='foo'))  

はじめに

Jupyter Notebookでipynbファイルを実行するとき、
自分自身のファイル名が知りたくなることがありませんか?
例えば、実行ログを別ファイルに出力するときにファイル名を書き出しておきたい、とか。

ググるといくつか方法が出てきますが、Jupyter Notebook / Jupyter Lab 兼用で短く書ける方法はなさそうです。
そこでページ下部の参考サイトの解決方法を参考に関数化・パッケージ化してPyPIに登録しました。

GitHub: https://github.com/kzm4269/ipynb-path

使い方

    Jupyter Notebook / JupyterLab サーバーにtokenでアクセスできる場合
import ipynb_path
__file__ = ipynb_path.get()
print(__file__)
    Jupyter Notebook / JupyterLab サーバーへのアクセスにパスワードが必要な場合
import ipynb_path
__file__ = ipynb_path.get(password='foo')
print(__file__)
    • 上記のコードを普通の .py ファイルにコピーすると __file__ が上書きされてしまいます。

 

    この問題は、引数に __name__ を渡すことで防ぐことができます。
import ipynb_path
__file__ = ipynb_path.get(__name__)
print(__file__)

参考

    • Jupyter notebookのnotebook名を取得する

 

    How do I get the current IPython / Jupyter Notebook name