VSCodeでPythonスクリプトを任意のディレクトリから実行する方法


Pythonスクリプトを実行する際、カレントディレクトリ（作業ディレクトリ）が意図した場所と異なると、ファイルの読み込みエラーなどが発生することがあります。特に、CSVファイルなど外部データを扱う場合、スクリプトが探す場所が異なっていると、FileNotFoundError になってしまいます。

こちらでは、VSCodeでPythonスクリプトを指定したディレクトリから実行する方法 を紹介します。

***
### 1. カレントディレクトリの確認方法

まず、Pythonスクリプトがどのディレクトリで実行されているのかを確認してみましょう。以下のコードをPythonスクリプトの冒頭に追加して、現在のカレントディレクトリを表示します。

```:python
import os

print("Current Working Directory:", os.getcwd())
```
例えば、VSCodeで example/script.py を実行したときに、出力が example/ ではなく example/other_directory/ になっている場合、スクリプトが意図しない場所から実行されていることが分かります。
***
### 2. launch.json で実行時のディレクトリを設定する

VSCodeのデバッグ実行時に、カレントディレクトリを指定する方法 です。
Pythonスクリプトを実行するときに、常に特定のディレクトリをカレントディレクトリとして指定できます。

 手順
1.	VSCodeで launch.json を開く
    	Cmd + Shift + P でコマンドパレットを開き、「launch.json」を検索し、launch.json を開きます。
2.	設定を追加
	launch.json に以下の設定を追加します。この設定で、Pythonスクリプトを実行するときに、常に指定したディレクトリから実行されるようになります。

```:json
{
    "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 に ターミナルのデフォルトディレクトリ を設定すると便利です。

手順
1.	VSCodeで settings.json を編集
	Cmd + Shift + P でコマンドパレットを開き、「settings.json」を検索し、開きます。
2.	以下の設定を追加
```: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() を使います。

方法
```:json
import os

# 実行ディレクトリを指定
os.chdir('/Users/username/Documents/example')

# 現在のディレクトリを確認
print("Current Working Directory:", os.getcwd())
```
これをスクリプトの最初に書いておけば、実行するたびにカレントディレクトリを指定の場所に変更 できます。
***
### まとめ

Pythonスクリプトのカレントディレクトリを指定する方法として、以下の4つの方法を紹介しました。
<table>
    <thead>
        <tr>
            <th>方法</th>
            <th>適用範囲</th>
            <th>設定方法</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td><code>launch.json</code> を使う</td>
            <td><strong>デバッグ実行時のディレクトリを変更</strong></td>
            <td>VSCodeの <code>launch.json</code> を編集</td>
        </tr>
        <tr>
            <td><code>settings.json</code> を使う</td>
            <td><strong>VSCodeターミナルのデフォルトディレクトリを変更</strong></td>
            <td><code>settings.json</code> を編集</td>
        </tr>
        <tr>
            <td><code>os.chdir()</code> を使う</td>
            <td><strong>スクリプト実行時に動的に変更</strong></td>
            <td>Pythonコード内で <code>os.chdir()</code> を記述</td>
        </tr>
        <tr>
            <td><code>cd</code> コマンドを使う</td>
            <td><strong>手動で移動してから実行</strong></td>
            <td>ターミナルで <code>cd</code> を実行</td>
        </tr>
    </tbody>
</table>
状況に応じて最適な方法を選んでください！