pythonで、ファイル、フォルダの存在を確認する方法について紹介します。
この記事で分かること
■ファイル、フォルダの存在確認の基本。osモジュールの使い方。
- ファイルまたはフォルダの存在確認
- ファイルのみの存在確認
- フォルダのみの存在確認
- ファイルの存在確認と、if文の組合せ
■【補足】osモジュール以外で、ファイル、フォルダの存在確認をする方法
- globモジュールでファイルの存在確認
- pathlibモジュールでファイルの存在確認
スポンサーリンク
はじめに
ファイルの存在確認はファイルの読み取り、書き込みを行う際には非常に重要な処理です。
ファイルの読み取りにおいて、読み取りたいファイルが存在しない場合は、その後の処理を正しく行うことができませんし、
ファイルの書き込みの際にファイルの存在確認を怠ると、誤って上書きしてしまう可能性があります。
正しいファイル操作を行うために、ファイルの存在確認方法は覚えておくようにしましょう。
本記事では、osモジュールを用いたファイル、フォルダの存在確認方法などを、サンプルコードを交えながら紹介しています。
なお、サンプルコードでは下記のフォルダ構成において動作確認しています。
ファイルまたはフォルダの存在確認【osモジュール】
はじめに、osモジュールを用いたファイル、フォルダの存在確認方法について紹介します。
osモジュールの os.path.exists関数 を用いると、ファイル・フォルダ両方の存在確認ができます。
ファイルまたはフォルダのパスが存在する場合Trueが返されます。
書き方
os.path.exists( パス )
以下、os.path.exists関数 を用いて、ファイルとフォルダの存在確認をするサンプルコードです。
### os.path.exists関数 を用いてファイルとフォルダの存在を確認
import os
file_path1 = r'C:\"---任意のパス---"\folder\file1.txt'
dir_path1 = r'C:\"---任意のパス---"\folder\folder1'
file_path2 = r'C:\"---任意のパス---"\folder\file-aaa.txt'
dir_path2 = r'C:\"---任意のパス---"\folder\folder-aaa'
print(os.path.exists(file_path1))
# True
print(os.path.exists(dir_path1))
# True
print(os.path.exists(file_path2))
# False
print(os.path.exists(dir_path2))
# False
> file_path1 = r'C:\"---任意のパス---"\folder\file1.txt'
「"---任意のパス---"」の部分は、好きな場所に置き換えてください。
また、文字列の先頭に「r」をつけると、その文字列は 「raw文字列」 として扱われます。
例えば、"\n"という文字列はpythonにより改行として扱われますが、raw文字列とすることで文字列の一部として扱われるようになります。
osモジュールの os.path.exists関数 を用いると、ファイル・フォルダとも、存在する場合はTrueとなります。
スポンサーリンク
ファイルのみの存在確認【osモジュール】
次に、osモジュールの os.path.isfile関数 を用いて、ファイルの存在確認をする方法を紹介します。
ファイルのパスが存在する場合のみ、Trueが返されます。
書き方
os.path.isfile( パス )
以下、os.path.isfile関数 を用いて、ファイルの存在確認をするサンプルコードです。
### os.path.isfile関数 を用いてファイルの存在を確認
import os
file_path1 = r'C:\"---任意のパス---"\folder\file1.txt'
dir_path1 = r'C:\"---任意のパス---"\folder\folder1'
file_path2 = r'C:\"---任意のパス---"\folder\file-aaa.txt'
dir_path2 = r'C:\"---任意のパス---"\folder\folder-aaa'
print(os.path.isfile(file_path1))
# True
print(os.path.isfile(dir_path1))
# False
print(os.path.isfile(file_path2))
# False
print(os.path.isfile(dir_path2))
# False
ファイルが存在する場合のみ、Trueとなっています。
フォルダのみの存在確認【osモジュール】
次に、osモジュールの os.path.isdir関数 を用いて、フォルダの存在確認をする方法を紹介します。
フォルダのパスが存在する場合のみ、Trueが返されます。
書き方
os.path.isdir( パス )
以下、os.path.isdir関数 を用いて、フォルダの存在確認をするサンプルコードです。
### os.path.isdir関数 を用いてフォルダの存在を確認
import os
file_path1 = r'C:\"---任意のパス---"\folder\file1.txt'
dir_path1 = r'C:\"---任意のパス---"\folder\folder1'
file_path2 = r'C:\"---任意のパス---"\folder\file-aaa.txt'
dir_path2 = r'C:\"---任意のパス---"\folder\folder-aaa'
print(os.path.isdir(file_path1))
# False
print(os.path.isdir(dir_path1))
# True
print(os.path.isdir(file_path2))
# False
print(os.path.isdir(dir_path2))
# False
フォルダが存在する場合のみ、Trueとなっています。
スポンサーリンク
ファイルの存在確認と、if文の組合せ
ファイルの存在確認の利用例として、if文と組合せて使用する例を紹介します。
以下のサンプルコードでは、ファイルが存在するか確認し、
ファイルが存在する場合は、ファイルを開いて中身を表示しています。
### ファイルの存在確認とif文の組合せ
import os
file_path1 = r'C:\"---任意のパス---"\folder\file1.txt'
if os.path.exists(file_path1) :
with open(file_path1) as f :
print(f.read())
else :
pass
# Hello!
# World!
存在確認をしてからファイルを開いているので、
ファイルが無かった場合のエラー停止を回避できます。
【補足】os以外のモジュールで、ファイルの存在を確認する
補足的な内容ですが、osモジュール以外でファイルの存在確認をする方法を紹介します。
globモジュールでファイルの存在を確認
globモジュールでファイルの存在を確認する方法を紹介します。
globモジュールを用いることで、検索パターンにマッチした、ファイル名、フォルダ名の一覧を取得できます。
以下のサンプルコードでは、globモジュールのglob関数でファイルフォルダの一覧を取得した後に、
for文で特定の文字を含むファイルがないか探しています。
### globモジュールでファイルの存在を確認
import os
import glob
path = r'C:\"---任意のパス---"\folder\*'
path_list = glob.glob(path)
search_file = 'pic'
for file in path_list :
if search_file in os.path.basename(file) :
print('ファイルが存在します')
print(file)
# ファイルが存在します
# C:\"---任意のパス---"\folder\pic1.jpg
# ファイルが存在します
# C:\"---任意のパス---"\folder\pic2.jpg
# ファイルが存在します
# C:\"---任意のパス---"\folder\pic3.jpg
globモジュールの使い方については、下記の記事で紹介しています。
pathlibモジュールでファイルの存在を確認
次に、pathlibモジュールでファイルの存在を確認する方法を紹介します。
pathlibは、python3.4から追加されたモジュールで、ファイルやフォルダのパスをオブジェクト形式で操作できます。
以下の例では、pathlibモジュールで、ファイル、フォルダのパスオブジェクトを作成し、
存在確認、および、ファイルかフォルダかの判定を行っています。
存在確認にはexistsメソッド、ファイルの判定にはis_fileメソッド、フォルダの判定にはis_dirメソッドを使用しています。
### pathlibモジュールでファイルの存在を確認
import pathlib
file_path = r'C:\"---任意のパス---"\folder\file1.txt'
dir_path = r'C:\"---任意のパス---"\folder\folder1'
p_file = pathlib.Path(file_path)
print(p_file.exists())
# True
print(p_file.is_file())
# True
print(p_file.is_dir())
# False
p_dir = pathlib.Path(dir_path)
print(p_dir.exists())
# True
print(p_dir.is_file())
# False
print(p_dir.is_dir())
# True
スポンサーリンク
まとめ
pythonでファイル、フォルダの存在を確認する方法について紹介しました。
ファイル、フォルダの名前、パスの一覧を取得する方法も知っておくと便利です。併せて覚えておくことをオススメします。
スポンサーリンク