Pythonでファイルを読み込む際に、FileNotFoundError
というエラーが発生することがあります。このエラーは、その名の通り「ファイルが見つからない」ことを示しています。
FileNotFoundErrorの原因
FileNotFoundError
の原因は、「ファイルが見つからない」、つまり存在しないファイルにアクセスしようとした場合に発生します。
例えば、以下のコードでは、ループの中で 0.csv
から 2.csv
までアクセスしようとしていますが、 1.csv
が無いので読み込めずにエラーになっています。
import pandas as pd
for i in range(3):
filename = "csv/{}.csv".format(str(i))
print(filename)
df = pd.read_csv(filename)
print(df)
print()
FileNotFoundErrorの回避方法
複数のファイルを読み込んで処理する場合、一部のファイルが存在しないことがあります。しかし、存在しない場合にエラーとして処理を止めたい場合もあれば、ファイルが存在しない場合を許容して、存在するファイルだけを処理したい場合もあります。
ファイルの存在確認をしてから処理する
ファイルが無い場合にアクセスしようとするとエラーになるので、まずファイルの存在確認をして、ファイルが無い場合はアクセスしないようにすれば良いです。
ファイルの存在確認をする場合は os.path.exists()
を用います。引数には存在を確認したいファイルのパスを記載します。
import pandas as pd
import os
for i in range(3):
filename = "csv/{}.csv".format(str(i))
print(filename)
if os.path.exists(filename):
df = pd.read_csv(filename)
print(df)
else:
print("{} not found.".format(filename))
print()
エラーをスキップする
もう一つの方法はエラーをスキップする方法です。FileNotFoundError
が発生してもプログラムの処理を止めないようにします。
具体的には try
処理の中で、 FileNotFoundError
のエラー発生時のみスキップ用の except
の処理に飛ばして、次のループを実行するようにします。
for i in range(3):
filename = "csv/{}.csv".format(str(i))
print(filename)
try:
df = pd.read_csv(filename)
print(df)
except FileNotFoundError as e:
print("{} not found.".format(filename))
print()
これらの方法を用いることで、Pythonで FileNotFoundError
を適切に対処することができます。