カレーちゃんブログ

Kaggleや競技プログラミングなどのこと

ローカルのjupyterかkaggleのKernelかを判定する方法

ローカルのjupyter notebookで動かす場合と、KaggleのKernelで動かす場合に、同じコードを使いながら、条件分岐し行うことを変更をしたい場合があります。
(例えば、inputフォルダの位置を変える等)
その場合に、どのように判定すればよいかを説明します。

この記事は、Python: 実行環境が Jupyter Notebook か判定する - CUBE SUGAR CONTAINERを参考にしました。

判定方法

kaggleのKernelの場合は、_dh['/kaggle/working']となります。
そのため、

_dh == ['/kaggle/working']
で、KaggleのKernelであればTrue、KaggleのKernelでなければばFalseがかえってきます。

使用例

train.csvを読み込む場合に、KaggleのKernelとKernel以外で行う処理を分けるコードです。
Kernel以外で、フォルダの位置を変更する必要があったり、読み込みが早いpickleやfeatherファイルを作っておいて読み込む処理にしたい場合に使えると思います。

import pandas as pd


def get_train():
    ```
    train.csvを取得する
    ```
    if _dh == ['/kaggle/working']:
        df = pd.read_csv('../input/train.csv')
    else:
        # ここに、Kernelじゃない場合に行うコードを記載
    return df

注意事項

kaggleのKernelの仕様の変更により、使えなくなる場合がありますので、確認のうえ使用ください。