Pythonでファイル、ディレクトリ(フォルダ)の存在確認

Pythonでファイルやディレクトリ(フォルダ)が存在するかどうかを確認する方法を説明します。パス操作のための標準モジュールos.pathを使います。

11.2. os.path — 共通のパス名操作 — Python 3.6.5 ドキュメント

ファイルやディレクトリの存在の有無を判定して処理内容を切り替える場合などに便利です。 以下の内容について説明します。

ファイルまたはディレクトリ(フォルダ)の存在確認: os.path.exists() ファイルの存在確認: os.path.isfile() ディレクトリ(フォルダ)の存在確認: os.path.isdir()

いずれの関数も引数としてパス文字列を指定します。 ここでは例として以下の二つのパス文字列を使います。それぞれ存在するファイルおよびディレクトリを示すパス。

import os

filepath = './data/temp/dir/file.txt'
dirpath = './data/temp/dir'

パス文字列の操作については

ファイルまたはディレクトリ(フォルダ)の存在確認: os.path.exists()

パスが存在しているかどうかを確認するにはos.path.exists()を使います。 ファイルでもディレクトリでも、存在していればTrue、存在していなければFalseを返します。

print(os.path.exists(filepath))
# True

print(os.path.exists(dirpath))
# True

ファイルの存在確認: os.path.isfile()

パスが存在しているファイルであるかどうかを確認するにはos.path.isfile()を使います。 ディレクトリ(フォルダ)を示すパスの場合は存在していてもFalseを返します。

print(os.path.isfile(filepath))
# True

print(os.path.isfile(dirpath))
# False

拡張子のないファイル名(Makefileなど)もファイルとして認識して正しく判定してくれる。

ディレクトリ(フォルダ)の存在確認: os.path.isdir()

パスが存在しているディレクトリ(フォルダ)であるかどうかを確認するにはos.path.isdir()を使います。 ファイルを示すパスの場合は存在していてもFalseを返します。

print(os.path.isdir(filepath))
# False

print(os.path.isdir(dirpath))
# True

パス文字列の末尾に区切り文字がついていても問題ありません。

dirpath_with_sep = './data/temp/dir/'

print(os.path.isfile(dirpath_with_sep))
# False

print(os.path.isdir(dirpath_with_sep))
# True
Last Updated: 6/26/2019, 10:34:03 PM