Pythonでファイル・ディレクトリの存在確認(os.path.exists, os.path.isfile, os.path.isdir)
この記事では、Pythonのosモジュールを使って、ファイルやディレクトリが存在するかどうかを確認する方法を説明します。os.path.exists(), os.path.isfile(), os.path.isdir()の使い方と注意点について解説します。
目次
- os.path.exists(): ファイルまたはディレクトリの存在確認
- os.path.isfile(): ファイルの存在確認
- os.path.isdir(): ディレクトリの存在確認
- 具体的な使用例
- 例外処理
os.path.exists(): ファイルまたはディレクトリの存在確認
os.path.exists()は、指定されたパスがファイルまたはディレクトリとして存在するかどうかをチェックします。存在する場合はTrue、存在しない場合はFalseを返します。
import os
print(os.path.exists("/tmp/test.txt")) # /tmp/test.txtが存在するかどうか
print(os.path.exists("/tmp/test_dir")) # /tmp/test_dirが存在するかどうか
パスが存在するかどうかを確認するシンプルな関数です。ファイルまたはディレクトリのどちらが存在するのかを区別する必要がない場合に便利です。
os.path.isfile(): ファイルの存在確認
os.path.isfile()は、指定されたパスがファイルとして存在するかどうかをチェックします。ファイルとして存在する場合はTrue、そうでない場合はFalseを返します。ディレクトリが存在してもFalseを返します。
import os
print(os.path.isfile("/tmp/test.txt"))
print(os.path.isfile("/tmp/test_dir"))
ファイルの存在確認に特化した関数です。引数にファイルパスを指定して、ファイルが存在するかどうかを確実に確認できます。
os.path.isdir(): ディレクトリの存在確認
os.path.isdir()は、指定されたパスがディレクトリとして存在するかどうかをチェックします。ディレクトリとして存在する場合はTrue、そうでない場合はFalseを返します。ファイルが存在してもFalseを返します。
import os
print(os.path.isdir("/tmp/test.txt"))
print(os.path.isdir("/tmp/test_dir"))
ディレクトリのみの存在確認に特化した関数です。引数にディレクトリパスを指定して、ディレクトリが存在するかどうかを確実に確認できます。
具体的な使用例
以下の例では、ファイルが存在するかどうかを確認し、存在しない場合はファイルを生成します。
import os
filepath = "/tmp/example.txt"
if not os.path.exists(filepath):
with open(filepath, "w") as f:
f.write("This is an example file.")
print(f"ファイル'{filepath}'を作成しました。")
else:
print(f"ファイル'{filepath}'は既に存在します。")
この例では、`os.path.exists()` を使用してファイルの存在を確認しています。存在しない場合のみ、ファイルを作成する処理を実行します。
例外処理
ファイルやディレクトリが存在しないパスにアクセスしようとすると例外が発生することがあります。例外処理を使用してプログラムの安定性を高めることが重要です。
import os
import errno
filepath = "/tmp/nonexistent_file.txt"
try:
with open(filepath, 'r') as f:
contents = f.read()
except FileNotFoundError:
print(f"ファイル '{filepath}' は見つかりません。")
except OSError as e:
if e.errno == errno.EACCES:
print(f"ファイル '{filepath}' にアクセスできません。")
else:
print(f"ファイル '{filepath}' にアクセス中にエラーが発生しました: {e}")
この例では、`try-except` ブロックを使用して `FileNotFoundError` や `OSError` などの例外を処理しています。`OSError` は、ファイルのアクセス権がない場合(`errno.EACCES`)など、さまざまなエラーをカバーする例外です。
関連記事
- Pythonでファイル・ディレクトリの情報を取得(os.stat, pathlib.Path)
- Pythonでファイル・ディレクトリの操作(os, shutil, pathlib)
- Pythonでファイルを開く・閉じる(open, close)
- Pythonでファイルを読み込む(read, readline, readlines)
- Pythonでファイルを追記モードで開く
- Pythonでファイルの上書き・削除
- Pythonでファイル・ディレクトリのコピー・移動(shutil.copy, shutil.move)
- PythonでCSVファイルを読み書き(csv)
- PythonでJSONファイルを読み書き(json)
- Pythonでファイルをバイナリモードで読み書き