Last Updated on 2025年7月28日
Pythonでファイルを扱う際に遭遇する典型的なエラーの1つが FileNotFoundError: [Errno 2] No such file or directory です。ファイルの読み書き処理において、対象のファイルが見つからない場合に発生します。初心者から上級者まで、誰もが一度は遭遇するこのエラーの原因や解決法を詳しく解説します。
目次
エラー内容
このエラーは、指定されたファイルやディレクトリが存在しない場合に発生します。典型的な出力例は以下のとおりです。
|
1 |
FileNotFoundError: [Errno 2] No such file or directory: 'xxx.txt' |
ここで示されている 'xxx.txt' は存在しないファイルパスです。このようなエラーは、読み込みモード('r')でファイルを開こうとしたときに起こりがちです。
原因
このエラーが発生する原因は以下のようなものがあります。
- ファイル名や拡張子のタイプミス
- 相対パスと絶対パスの混同
- ファイルがまだ作成されていない
- ファイルの保存先ディレクトリが存在しない
- ファイルが削除された、もしくは移動された
例えば以下のようなコードを実行すると、指定されたファイルが存在しなければエラーが出ます。
|
1 2 |
with open("data.txt", "r") as f: content = f.read() |
この data.txt が存在しない場合、Pythonは FileNotFoundError をスローします。
対処法
このエラーを解決するためには、いくつかのアプローチがあります。
1. ファイルの存在を確認する
まずは対象のファイルが指定の場所に存在するかを確認しましょう。ターミナルやエクスプローラーで実際に確認します。
2. os.path.exists を使って存在確認
以下のようにPython内でファイルの存在をチェックしてから処理を行うことで、エラーを回避できます。
|
1 2 3 4 5 6 7 8 |
import os file_path = "data.txt" if os.path.exists(file_path): with open(file_path, "r") as f: content = f.read() else: print("ファイルが存在しません。") |
3. 例外処理でカバーする
try-except 構文を使ってエラーを捕捉し、ユーザーにわかりやすいメッセージを表示することができます。
|
1 2 3 4 5 |
try: with open("data.txt", "r") as f: content = f.read() except FileNotFoundError as e: print(f"ファイルが見つかりません: {e}") |
4. ファイルが存在しない場合に新規作成
読み込みではなく書き込みを目的としている場合は、モードを 'w' または 'a' に変更することで、新規作成されるようになります。
|
1 2 |
with open("new_file.txt", "w") as f: f.write("初期データ") |
5. ディレクトリの存在確認と作成
ファイルを保存しようとしているディレクトリが存在しない場合、以下のようにしてディレクトリを作成してからファイル操作を行います。
|
1 2 3 4 5 6 7 8 9 10 |
import os dir_path = "output" file_path = os.path.join(dir_path, "result.txt") if not os.path.exists(dir_path): os.makedirs(dir_path) with open(file_path, "w") as f: f.write("保存成功") |
補足
ファイル操作に関しては、以下のような注意点も押さえておくとよいでしょう。
- エンコーディングの問題(
encoding="utf-8"の指定) - 相対パスを使う場合は
__file__を基準にしたパス取得が有効 - 一時ファイルの扱いには
tempfileモジュールが便利
また、WindowsとUnix系OSでファイルパスの表記が異なるため、os.path.join() を使用して環境に依存しない記述を心がけましょう。
まとめ
FileNotFoundError はPythonにおいて非常に頻繁に見られるエラーのひとつです。しかし、原因をひとつひとつ検証していけば、比較的簡単に修正可能です。ファイルの存在確認や、例外処理の活用などを習慣化することで、堅牢なコードを書くことができます。今回紹介した対処法を活用し、より安全で信頼性の高いプログラムを作成していきましょう。


