Pythonでファイルの存在チェックを行う方法!os.path.exists()の使い方を徹底解説
生徒
「Pythonでファイルを読み込もうとしたら、ファイルが無いってエラーになっちゃいました。どうしたらいいんですか?」
先生
「それは“ファイルの存在チェック”をしていないからですね。Pythonでは、os.path.exists()を使うと、ファイルが存在するかどうかを簡単に調べられますよ。」
生徒
「存在チェックって、ファイルがあるかどうかを確かめることですよね?それってどうやるんですか?」
先生
「では、実際にPythonのコードを使って、ファイルの存在を調べる方法を見てみましょう!」
1. ファイルの存在チェックとは?
「ファイルの存在チェック」とは、その名の通り、指定した場所にファイルがあるかどうかを確認する処理のことです。例えば、Pythonのプログラムでファイルを開こうとしたとき、そのファイルが存在しなければエラーが発生してしまいます。
現実の例で言えば、机の引き出しを開ける前に「その引き出しの中にノートがあるか確認する」といった感じです。ノート(ファイル)が無ければ、探すだけ無駄ですし、開けても意味がありません。プログラムも同じで、存在しないファイルを開こうとするとエラーになります。
そのため、ファイルを使う前には必ず「ファイルがあるかどうか」を確認するのが安全です。
2. os.path.exists()とは?
os.path.exists()は、Pythonの標準ライブラリであるosモジュールに含まれる関数です。この関数は、指定したパス(ファイルやフォルダの場所)が存在するかどうかを調べるために使われます。
返り値(関数が返す結果)はとてもシンプルで、存在すればTrue、存在しなければFalseを返します。つまり、「はい」「いいえ」を判断する関数だと思えば分かりやすいです。
このos.path.exists()を使うことで、ファイルの有無を安全にチェックして、エラーを防ぐことができます。
3. os.path.exists()の基本的な使い方
それでは、基本的な使い方を見てみましょう。
import os
if os.path.exists("data.txt"):
print("ファイルが存在します。")
else:
print("ファイルが見つかりません。")
ファイルが存在します。
このように書くだけで、ファイルがあるかどうかを簡単に確認できます。もしdata.txtというファイルが同じフォルダにあれば「ファイルが存在します。」と表示され、無ければ「ファイルが見つかりません。」と出力されます。
4. フォルダの存在チェックもできる
os.path.exists()は、実はファイルだけでなくフォルダの存在確認にも使えます。つまり、「ファイルまたはフォルダ」が存在するかどうかを調べられる万能な関数です。
import os
if os.path.exists("images"):
print("フォルダが存在します。")
else:
print("フォルダが存在しません。")
フォルダが存在します。
このように書くと、「images」というフォルダがあるかどうかを調べて結果を表示します。Pythonでは、ファイルもフォルダも“パス”という形で扱えるため、同じ関数で確認できるのです。
5. ファイルだけをチェックしたいとき
ときには「ファイルだけを確認したい」「フォルダは除外したい」という場合もあります。そのときは、os.path.isfile()を使います。名前の通り、“is file”(ファイルですか?)を判定します。
import os
if os.path.isfile("data.txt"):
print("これはファイルです。")
else:
print("これはファイルではありません。")
これはファイルです。
これで、「ファイルなのか」「フォルダなのか」を区別できます。同様に、フォルダだけを調べたい場合はos.path.isdir()を使います。
import os
if os.path.isdir("images"):
print("これはフォルダです。")
else:
print("これはフォルダではありません。")
これはフォルダです。
このように、用途に合わせて関数を使い分けるのがポイントです。
6. ファイルを開く前に存在チェックをする理由
初心者の方がよくやってしまうミスのひとつが、「存在しないファイルをopen()で開こうとしてエラーになる」ことです。
file = open("sample.txt", "r")
このコードでsample.txtが存在しなければ、Pythonは「No such file or directory(そんなファイルやフォルダはありません)」というエラーを出します。これを防ぐために、os.path.exists()で事前にチェックしておけば安心です。
import os
if os.path.exists("sample.txt"):
with open("sample.txt", "r") as f:
content = f.read()
print(content)
else:
print("ファイルが存在しないため、読み込みをスキップしました。")
このように「存在すれば開く、無ければ開かない」という処理を入れることで、エラーを防ぎ、プログラムの信頼性を高められます。
7. パスの指定に注意しよう
os.path.exists()を使うときに注意したいのが「パスの指定」です。パスとは、ファイルの場所を示す住所のようなもので、指定方法によって結果が変わります。
相対パスは、今のプログラムがある場所を基準にして指定する方法です。たとえば、同じフォルダ内にあるファイルなら"data.txt"のように書けます。
絶対パスは、パソコンのルート(最上位の階層)から全部のフォルダを指定する方法です。例:"C:/Users/Name/Documents/data.txt"
もし「ファイルがあるのに見つからない」と出る場合は、パスが正しく指定できていないことが多いです。そんなときはprint(os.getcwd())で「今どこのフォルダで実行しているか」を確認してみましょう。
8. まとめ:ファイルの存在確認で安全なPythonプログラムを作ろう
os.path.exists()は、Pythonでファイルやフォルダを扱うときに欠かせない基本機能です。これを使えば、存在しないファイルを扱うミスを防ぎ、エラーのない安全なプログラムを書くことができます。
初心者のうちは少し地味に感じるかもしれませんが、実はとても大切な処理です。ファイルを扱うときは「開く前に存在を確認する」を習慣にしておくと、将来もっと複雑なプログラムを書くときにも役立ちます。