Pythonでファイルを読み込もうとしたとき、次のようなエラーが出ることがあります。
FileNotFoundError: [Errno 2] No such file or directory
ファイルは存在しているはずなのに、
なぜか見つからないと言われてしまう――。
このエラーは、ファイルが無いのではなく「パスの指定が間違っている」
ケースがほとんどです。
目次
この記事でわかること
- FileNotFoundError が出る主な原因
- Pythonにおけるパスの考え方
- 相対パス・絶対パスの確認方法
- Mac環境での安全な対処手順
結論:原因は「パスのズレ」がほとんど
先に結論です。
FileNotFoundError が出る原因は、ほぼ次のいずれかです。
- 実行しているディレクトリが想定と違う
- 相対パスの基準を誤っている
- ファイル名・拡張子の指定ミス
- パスの大文字・小文字の違い
順番に確認していきましょう。
原因① 実行しているディレクトリが違う
Pythonは、実行した場所(カレントディレクトリ) を基準に
相対パスを解釈します。
確認方法
pwd
現在の作業ディレクトリが表示されます。
よくある例
- VS Codeで実行 → プロジェクト直下
- ターミナルで実行 → 別ディレクトリ
このズレが FileNotFoundError の原因になります。
原因② 相対パスの指定ミス
相対パスは、
今いるディレクトリからの位置関係 で指定します。
例
data/sample.txt
この場合、
dataフォルダが存在するか- その中に
sample.txtがあるか
を確認してください。
原因③ 絶対パスを指定していない
迷ったら 絶対パス を使うのが安全です。
例(Mac)
/Users/ユーザー名/project/data/sample.txt
これでエラーが消える場合、
相対パスの基準がズレていたことが分かります。
原因④ ファイル名・拡張子のミス
FileNotFoundError は、
わずかな違いでも発生 します。
よくあるミス
sample.txtとsample.csv- 全角・半角の違い
- スペルミス
ターミナルで実際に確認すると確実です。
ls
原因⑤ 大文字・小文字の違い(Mac特有)
Macでは設定によって、
- 大文字・小文字を区別する
- 区別しない
が分かれます。
Pythonは 区別する前提 で動くため、
Data.txt
data.txt
は別ファイルとして扱われることがあります。
デバッグに役立つ確認コード
実行中の作業ディレクトリを確認できます。
import os
print(os.getcwd())
この出力と、
ファイルの位置を照らし合わせてください。
よくあるNG対応
- ファイルが無いと思い込む
- 無理に
../を増やす - 何度もパスを書き換える
まずは 現在地(pwd / getcwd)を確認 するのが最短ルートです。
まとめ
Pythonで FileNotFoundError が出る原因は、
- 実行ディレクトリの違い
- 相対パスの基準ミス
- ファイル名の指定ミス
がほとんどです。
「今どこで実行しているか」 を意識するだけで、
多くの FileNotFoundError は防げます。
コメントを残す