ファイル・フォルダ操作 ライブラリ 文法・環境 標準ライブラリ・モジュール

【python】ファイル、フォルダの存在確認【os、glob、pathlib、if文との組合せ】

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でファイル、フォルダの存在を確認する方法について紹介しました。

ファイル、フォルダの名前、パスの一覧を取得する方法も知っておくと便利です。併せて覚えておくことをオススメします。

ファイル、フォルダの名前、パスの一覧を取得する方法

スポンサーリンク

-ファイル・フォルダ操作, ライブラリ, 文法・環境, 標準ライブラリ・モジュール
-, ,