Pythonスクリプトを実行する際、カレントディレクトリ(作業ディレクトリ)が意図した場所と異なると、ファイルの読み込みエラーなどが発生することがあります。特に、CSVファイルなど外部データを扱う場合、スクリプトが探す場所が異なっていると、FileNotFoundError になってしまいます。
こちらでは、VSCodeでPythonスクリプトを指定したディレクトリから実行する方法 を紹介します。
1. カレントディレクトリの確認方法
まず、Pythonスクリプトがどのディレクトリで実行されているのかを確認してみましょう。以下のコードをPythonスクリプトの冒頭に追加して、現在のカレントディレクトリを表示します。
import os
print("Current Working Directory:", os.getcwd())
例えば、VSCodeで example/script.py を実行したときに、出力が example/ ではなく example/other_directory/ になっている場合、スクリプトが意図しない場所から実行されていることが分かります。
2. launch.json で実行時のディレクトリを設定する
VSCodeのデバッグ実行時に、カレントディレクトリを指定する方法 です。
Pythonスクリプトを実行するときに、常に特定のディレクトリをカレントディレクトリとして指定できます。
手順
- VSCodeで launch.json を開く
Cmd + Shift + P でコマンドパレットを開き、「launch.json」を検索し、launch.json を開きます。 - 設定を追加
launch.json に以下の設定を追加します。この設定で、Pythonスクリプトを実行するときに、常に指定したディレクトリから実行されるようになります。
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "C:/Users/username/Documents/example/data"
}
]
}
ここで、"cwd" を /Users/username/Documents/example に指定すると、VSCode上でPythonスクリプトを実行するたびに、カレントディレクトリが example/ になる ように設定されます。
3. VSCodeを再起動して確認
設定を反映させるため、VSCodeを再起動します。
再度、Pythonスクリプトを実行して os.getcwd() の出力を確認してください。
3. settings.json でVSCodeのターミナルのカレントディレクトリを設定する
Pythonスクリプトを ターミナル(手動実行)で動かす場合 は、settings.json に ターミナルのデフォルトディレクトリ を設定すると便利です。
手順
- VSCodeで settings.json を編集
Cmd + Shift + P でコマンドパレットを開き、「settings.json」を検索し、開きます。 - 以下の設定を追加
{
"terminal.integrated.cwd": "/Users/username/Documents/example"
}
これで、VSCodeで新しいターミナルを開くと、自動的に /Users/username/Documents/example に移動する ようになります。
3. 設定の確認
VSCodeのターミナルを開いて pwd(Mac/Linux) または cd(Windows) で、カレントディレクトリが変更されていることを確認しましょう。
4. Pythonスクリプト内で os.chdir() を使ってディレクトリを変更する
もし VSCodeの設定を変更せず、Pythonスクリプトの中でカレントディレクトリを変更したい場合 は、os.chdir() を使います。
方法
import os
# 実行ディレクトリを指定
os.chdir('/Users/username/Documents/example')
# 現在のディレクトリを確認
print("Current Working Directory:", os.getcwd())
これをスクリプトの最初に書いておけば、実行するたびにカレントディレクトリを指定の場所に変更 できます。
まとめ
Pythonスクリプトのカレントディレクトリを指定する方法として、以下の4つの方法を紹介しました。
方法 | 適用範囲 | 設定方法 |
---|---|---|
launch.json を使う |
デバッグ実行時のディレクトリを変更 | VSCodeの launch.json を編集 |
settings.json を使う |
VSCodeターミナルのデフォルトディレクトリを変更 |
settings.json を編集 |
os.chdir() を使う |
スクリプト実行時に動的に変更 | Pythonコード内で os.chdir() を記述 |
cd コマンドを使う |
手動で移動してから実行 | ターミナルで cd を実行 |