[Python] フォルダが存在するか検索する方法

Pythonでフォルダが存在するかを確認するには、標準ライブラリのosモジュールやpathlibモジュールを使用します。

os.path.exists()os.path.isdir()を使うと、指定したパスが存在するか、またはディレクトリかどうかを確認できます。

また、pathlib.Pathオブジェクトのexists()is_dir()メソッドも同様の機能を提供します。

osは古くから使われており、pathlibはPython 3.4以降で導入された新しい方法です。

この記事でわかること
  • osモジュールを使ったフォルダ確認方法
  • pathlibモジュールの活用法
  • フォルダの存在確認の応用例
  • フォルダ作成やバックアップ処理の実装

目次から探す

osモジュールを使ったフォルダの存在確認

Pythonのosモジュールは、オペレーティングシステムとのインターフェースを提供し、ファイルやフォルダの操作を簡単に行うことができます。

ここでは、フォルダの存在確認に関するメソッドを紹介します。

os.path.exists()の使い方

os.path.exists()は、指定したパスが存在するかどうかを確認するための関数です。

フォルダだけでなく、ファイルの存在確認にも使用できます。

import os
# 確認したいフォルダのパス
folder_path = 'example_folder'
# フォルダの存在確認
if os.path.exists(folder_path):
    print("フォルダは存在します。")
else:
    print("フォルダは存在しません。")
フォルダは存在しません。

os.path.isdir()の使い方

os.path.isdir()は、指定したパスがディレクトリ(フォルダ)であるかどうかを確認するための関数です。

これにより、ファイルとフォルダを区別することができます。

import os
# 確認したいフォルダのパス
folder_path = 'example_folder'
# フォルダの存在確認
if os.path.isdir(folder_path):
    print("指定したパスはフォルダです。")
else:
    print("指定したパスはフォルダではありません。")
指定したパスはフォルダではありません。

os.path.exists()とos.path.isdir()の違い

スクロールできます
メソッド名説明使用例
os.path.exists()指定したパスが存在するか確認するフォルダ・ファイル両方に使用
os.path.isdir()指定したパスがフォルダか確認するフォルダのみ確認

os.path.exists()は、パスが存在するかどうかを確認するのに対し、os.path.isdir()はそのパスがフォルダであるかどうかを確認します。

フォルダが存在しない場合の処理方法

フォルダが存在しない場合に特定の処理を行うことができます。

例えば、フォルダを自動的に作成することが可能です。

import os
# 確認したいフォルダのパス
folder_path = 'example_folder'
# フォルダの存在確認
if not os.path.exists(folder_path):
    os.makedirs(folder_path)  # フォルダを作成
    print("フォルダを作成しました。")
else:
    print("フォルダは既に存在します。")
フォルダを作成しました。

osモジュールを使ったフォルダ検索の実例

以下は、指定したディレクトリ内に特定のフォルダが存在するかを確認する例です。

import os
# 確認したい親フォルダのパス
parent_folder = 'parent_directory'
target_folder = 'target_folder'
# フォルダの存在確認
if os.path.exists(os.path.join(parent_folder, target_folder)):
    print(f"{target_folder}は{parent_folder}内に存在します。")
else:
    print(f"{target_folder}は{parent_folder}内に存在しません。")
target_folderはparent_directory内に存在しません。

このように、osモジュールを使用することで、フォルダの存在確認や操作を簡単に行うことができます。

pathlibモジュールを使ったフォルダの存在確認

Pythonのpathlibモジュールは、ファイルシステムのパスをオブジェクト指向で扱うための便利なツールです。

ここでは、フォルダの存在確認に関するメソッドを紹介します。

pathlib.Path.exists()の使い方

pathlib.Path.exists()は、指定したパスが存在するかどうかを確認するためのメソッドです。

フォルダやファイルの存在確認に使用できます。

from pathlib import Path
# 確認したいフォルダのパス
folder_path = Path('example_folder')
# フォルダの存在確認
if folder_path.exists():
    print("フォルダは存在します。")
else:
    print("フォルダは存在しません。")
フォルダは存在しません。

pathlib.Path.is_dir()の使い方

pathlib.Path.is_dir()は、指定したパスがディレクトリ(フォルダ)であるかどうかを確認するためのメソッドです。

これにより、ファイルとフォルダを区別することができます。

from pathlib import Path
# 確認したいフォルダのパス
folder_path = Path('example_folder')
# フォルダの存在確認
if folder_path.is_dir():
    print("指定したパスはフォルダです。")
else:
    print("指定したパスはフォルダではありません。")
指定したパスはフォルダではありません。

pathlibモジュールを使ったフォルダ検索の実例

以下は、指定したディレクトリ内に特定のフォルダが存在するかを確認する例です。

from pathlib import Path
# 確認したい親フォルダのパス
parent_folder = Path('parent_directory')
target_folder = 'target_folder'
# フォルダの存在確認
if (parent_folder / target_folder).exists():
    print(f"{target_folder}は{parent_folder}内に存在します。")
else:
    print(f"{target_folder}は{parent_folder}内に存在しません。")
target_folderはparent_directory内に存在しません。

pathlibを使うメリットとデメリット

スクロールできます
メリットデメリット
オブジェクト指向で直感的に扱えるPython 3.4以降でしか使用できない
パスの操作が簡潔で可読性が高い一部の古いライブラリとの互換性がない
ファイルやフォルダの操作が統一されている学習コストが若干高い場合がある

pathlibモジュールは、パスの操作をオブジェクトとして扱うため、コードがシンプルで可読性が高くなりますが、古いバージョンのPythonでは使用できない点に注意が必要です。

フォルダの存在確認を応用した処理

フォルダの存在確認は、さまざまな処理に応用できます。

ここでは、フォルダが存在しない場合の自動作成や、ファイルの存在確認との組み合わせ、バックアップ処理などの実例を紹介します。

フォルダが存在しない場合に自動で作成する方法

フォルダが存在しない場合に自動的に作成する処理は、データの保存先を確保するために便利です。

以下のコードでは、osモジュールを使用してフォルダを作成します。

import os
# 確認したいフォルダのパス
folder_path = 'backup_folder'
# フォルダの存在確認
if not os.path.exists(folder_path):
    os.makedirs(folder_path)  # フォルダを作成
    print("フォルダを作成しました。")
else:
    print("フォルダは既に存在します。")
フォルダを作成しました。

フォルダの存在確認とファイルの存在確認を組み合わせる方法

フォルダの存在確認とファイルの存在確認を組み合わせることで、特定のファイルが存在するかどうかを確認し、必要に応じて処理を行うことができます。

import os
# 確認したいフォルダとファイルのパス
folder_path = 'data_folder'
file_path = os.path.join(folder_path, 'data.txt')
# フォルダとファイルの存在確認
if os.path.exists(folder_path):
    if os.path.isfile(file_path):
        print("ファイルは存在します。")
    else:
        print("ファイルは存在しません。")
else:
    print("フォルダは存在しません。")
フォルダは存在しません。

フォルダの存在確認を使ったバックアップ処理の実装例

フォルダの存在確認を利用して、バックアップ処理を実装することができます。

以下の例では、指定したフォルダにバックアップファイルを保存します。

import os
import shutil
# バックアップ元とバックアップ先のパス
source_folder = 'source_folder'
backup_folder = 'backup_folder'
# バックアップ先のフォルダが存在しない場合は作成
if not os.path.exists(backup_folder):
    os.makedirs(backup_folder)
# バックアップ処理
shutil.copytree(source_folder, os.path.join(backup_folder, 'backup_source_folder'))
print("バックアップが完了しました。")
バックアップが完了しました。

複数のフォルダを一括で確認する方法

複数のフォルダの存在を一括で確認する場合、リストを使用してループ処理を行うことができます。

import os
# 確認したいフォルダのリスト
folders_to_check = ['folder1', 'folder2', 'folder3']
# フォルダの存在確認
for folder in folders_to_check:
    if os.path.exists(folder):
        print(f"{folder}は存在します。")
    else:
        print(f"{folder}は存在しません。")
folder1は存在します。
folder2は存在しません。
folder3は存在します。

このように、フォルダの存在確認を応用することで、さまざまな処理を効率的に行うことができます。

よくある質問

os.path.exists()とos.path.isdir()はどちらを使うべき?

os.path.exists()os.path.isdir()はそれぞれ異なる目的で使用されます。

os.path.exists()は指定したパスが存在するかどうかを確認するために使用し、フォルダだけでなくファイルの存在確認にも使えます。

一方、os.path.isdir()は指定したパスがディレクトリであるかどうかを確認するために使用します。

したがって、フォルダの存在を確認したい場合はos.path.isdir()を使用するのが適切ですが、ファイルの存在も確認したい場合はos.path.exists()を使用するべきです。

pathlibはPython 2.xでも使える?

pathlibモジュールはPython 3.4以降で導入されたため、Python 2.xでは使用できません。

Python 2.xを使用している場合は、osモジュールを利用してファイルやフォルダの操作を行う必要があります。

Python 3.xへの移行を検討することをお勧めします。

フォルダが存在しない場合にエラーを出すにはどうすればいい?

フォルダが存在しない場合にエラーを出すには、os.path.exists()os.path.isdir()を使用して存在確認を行い、存在しない場合にraise文を使って例外を発生させることができます。

以下はその例です。

import os
# 確認したいフォルダのパス
folder_path = 'example_folder'
# フォルダの存在確認
if not os.path.exists(folder_path):
    raise FileNotFoundError(f"{folder_path}が存在しません。")

このようにすることで、フォルダが存在しない場合に明示的にエラーを出すことができます。

まとめ

この記事では、Pythonのosモジュールとpathlibモジュールを使用してフォルダの存在確認を行う方法について詳しく解説しました。

フォルダの存在確認は、ファイル操作やデータ管理において非常に重要な処理であり、さまざまな応用が可能です。

これを機に、フォルダの存在確認を活用して、より効率的なプログラミングを実践してみてください。

  • URLをコピーしました!
目次から探す