Pythonを使ってファイル操作を行う際、「そもそもファイルが存在するのか」を確認することは非常に大切です。本記事では、初心者の方でもわかりやすいように、Pythonでファイルの存在チェックを行う方法や注意点を丁寧に解説します。
なぜPythonでファイルの存在チェックが必要なのか
プログラムを作成するとき、処理対象のファイルが存在しないとエラーが発生してしまいます。例えばログファイルの読み込みやCSVデータの処理など、ファイルがあることを前提にコードを書くと、予期せぬ例外が起きてしまうのです。事前にファイルの存在をチェックすることで、ユーザーに分かりやすいエラーメッセージを出したり、別の処理に切り替えたりすることができます。つまり、安定したプログラムを作るうえで欠かせないテクニックと言えるでしょう。
基本の方法:os.path.existsを使う
Pythonでファイルの存在を確認する最も基本的な方法は、os.path.exists()
を使うことです。この関数は指定したパスが存在すればTrue
を返し、存在しなければFalse
を返します。とてもシンプルで直感的です。
import os
file_path = "example.txt"
if os.path.exists(file_path):
print("ファイルは存在します")
else:
print("ファイルは存在しません")
ただし、この方法ではファイルかディレクトリかを区別せずに存在を判定します。そのため、もう少し細かいチェックを行いたい場合は次に紹介する方法を使います。
ファイルかディレクトリかを区別する
ときには「ファイルは存在するが、それはディレクトリだった」というケースもあります。その場合はos.path.isfile()
やos.path.isdir()
を使うと便利です。
if os.path.isfile(file_path):
print("これはファイルです")
elif os.path.isdir(file_path):
print("これはディレクトリです")
else:
print("存在しません")
このように分岐させることで、意図しない動作を避けることができます。特に処理対象が明確にファイルである場合は、isfile()
でチェックする習慣をつけると安心です。
新しい方法:pathlibを使う
Python3.4以降ではpathlib
モジュールが登場し、より直感的にファイルパスを扱えるようになりました。これを使えば、オブジェクト指向的にファイル操作ができるため、コードも読みやすくなります。
from pathlib import Path
file_path = Path("example.txt")
if file_path.exists():
print("ファイルは存在します")
else:
print("ファイルは存在しません")
Path
オブジェクトはis_file()
やis_dir()
といった便利なメソッドも持っており、直感的に書けるのが特徴です。最近のPythonコードではpathlib
が推奨されることも多いため、覚えておいて損はありません。
例外処理で存在チェックを行う方法
もう一つのアプローチは、ファイルを開こうとして例外が発生したら「存在しない」と判断する方法です。この場合、try-except構文を使います。
try:
with open("example.txt", "r") as f:
print("ファイルが開けました")
except FileNotFoundError:
print("ファイルは存在しません")
この方法は「開けるかどうか」を直接確認できる点で便利ですが、存在するだけでなく実際に読み取り可能かどうかも同時に確認してしまうため、使いどころを考える必要があります。
応用テクニック:複数のファイルをまとめてチェック
実務では「複数のファイルが揃っているかどうか」をまとめて確認したいケースもあります。その場合はループを活用すると効率的です。
files = ["a.txt", "b.txt", "c.txt"]
for f in files:
path = Path(f)
if path.exists():
print(f"{f} は存在します")
else:
print(f"{f} は存在しません")
このようにすれば、複数ファイルのチェックを一度に行えます。ログ処理やデータ分析の前処理などで役立つでしょう。
よくあるエラーと注意点
相対パスと絶対パスの混同
「ファイルが存在しない」と思ったら、実はパスの指定が間違っていることもよくあります。特に相対パスは実行場所に依存するため、意図しないフォルダを見ている可能性があります。os.getcwd()
で現在の作業ディレクトリを確認すると原因がわかることがあります。
権限エラー
ファイルが存在していても、権限が不足していて開けないこともあります。特にLinux環境ではパーミッションが原因になることが多いので注意しましょう。
大文字・小文字の違い
Windowsは大文字と小文字を区別しませんが、LinuxやMacは区別します。そのため、ファイル名の指定が微妙に違うだけで「存在しない」と判定されてしまうことがあるのです。
Python初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富なPython講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験やPythonの知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
Pythonでファイルの存在チェックをする方法は複数ありますが、os.path
やpathlib
を使えば簡単に実現できます。ぜひ自分のプロジェクトに合った方法を取り入れてみてください。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント