はじめに
今回は、ファイル操作の時に発生したエラーについてです。
少し大きめのプログラムを作っていたので、機能ごとに色々分けている途中に起きたエラーでした。
その時のエラーの内容の原因と対処法、エラーが発生する簡単なプログラムを例としてまとめました。
エラーの原因&対処法
エラー
まず発生したエラーですが、
FileNotFoundError: [Errno 2] No such file or directory: '********'
‘********’部分は任意のファイルパスになります。
エラーを日本語訳すると
「指定されたファイルまたはディレクトリが存在しません」
という意味になります。
エラーメッセージの通りですが、ファイルが見つからないことによりエラーになっています。
原因と対処方法
原因は前述の通りで、このエラーは主に、Pythonのプログラムが指定したパスに存在しないファイルやディレクトリにアクセスしようとしたときに発生します。
サンプルプログラムの環境
具体的なエラーが発生するコード例とその修正例を次にそれぞれ表示します。
まず次のような環境を想定します。
project/
│
├── exist_file.txt
│
└── main.py
main.pyから同じ階層にあるexitst_file.txtにアクセスする想定とします。
では実際にエラーが出る場合と出ない場合の例を見てみましょう。
エラーが出る例
エラーが発生するコードの例
# main.py
with open('non_existent_file.txt', 'r') as file:
print(file.read())
このコードは、実行ディレクトリに ‘non_existent_file.txt’ という名前のファイルが存在することを期待しています。しかしこのファイルは存在しないため、
FileNotFoundError: [Errno 2] No such file or directory: 'non_existent_file.txt'
というエラーが出ます。
エラーが出ない例
修正後のコードの例です。
次の例はファイルパスを正しく設定した場合です。
# main.py
with open('exist_file.txt', 'r') as file:
print(file.read())
こちらでも問題なく動作しますが、念のため存在しないファイルパスを指定してもエラーにならないようにする場合は次のようにTry-exceptを入れるのも良いかもしれません。
# main.py
try:
with open('non_existent_file.txt', 'r') as file:
print(file.read())
except FileNotFoundError:
print('指定されたファイルが存在しません。')
Tips
エラーが発生しないようにするには次のような事を気をつけるのが良いですね。
- ファイルを開く前に、そのファイルが存在することを確認する
- 相対パスではなく、絶対パスを使うことでエラーを回避できることがある
- エラーハンドリングを行い、ファイルが存在しない場合の処理を書く
さいごに
今回はPythonでファイル操作をしている時に発生したエラーでした。
規模が大きくなってフォルダに分けるようにした時になりました。
ソースを変更したりするタイミングはエラーが発生しやすいので注意が必要ですね。
例で書い様に、エラーハンドリングなど入れるのも良いかと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。