VSCodeでPythonの.ipynb
ファイルを実行する場合、その作業ディレクトリがどのように設定されるか、またJavaファイルを実行する際との違いについて考察してみましょう。以下のコードを例に説明します。
import os os.makedirs(os.path.join('..', 'data'), exist_ok=True) data_file = os.path.join('..', 'data', 'house_tiny.csv') with open(data_file, 'w') as f: f.write('NumRooms,Alley,Price\n') # 列名 f.write('NA,Pave,127500\n') # 各行がデータサンプルを表す f.write('2,NA,106000\n') f.write('4,NA,178100\n') f.write('NA,NA,140000\n')
このコードは相対パスを使用して、上の階層にあるdata
フォルダにCSVファイルを作成するものです。
VSCodeでの.ipynbファイルの作業ディレクトリ
VSCodeで.ipynb
ファイルを実行する際の作業ディレクトリは、デフォルトでその.ipynb
ファイルが置かれているディレクトリになります。そのため、上記のコードでは、.ipynb
ファイルのディレクトリから見た相対パスでdata
フォルダが作成されます。VSCodeのJupyter Notebook環境では、相対パスが.ipynb
ファイルを基準に解釈されるため、特別な設定をせずともスムーズに動作します。
Javaでのファイル実行
一方、Javaファイルを実行する場合は、作業ディレクトリは通常コマンドを実行した場所に依存します。もしJavaプログラム内で相対パスを指定している場合、Javaファイルのディレクトリに移動するためにcd
コマンドを使ってディレクトリを変更しなければ、期待通りに動作しない可能性があります。
例えば、cd
でディレクトリを変更せずにJavaプログラムを実行すると、プログラムが探しているファイルパスと異なり、ファイルが見つからない、または誤ったパスにファイルが作成されるといった問題が発生することがあります。Javaでは、作業ディレクトリに合わせてパスを明示的に設定することが重要です。
まとめ
VSCodeの.ipynbファイルの場合、作業ディレクトリはファイルの所在に一致し、相対パスが分かりやすく使えるのに対して、Javaではcd
コマンドを使って適切なディレクトリに移動することが必要です。