glob
は、Pythonでファイルパターンマッチングを行うための組み込みライブラリです。特定のパターンに一致するファイルやディレクトリを検索するためのシンプルで強力なツールを提供します。ファイルの一括処理やディレクトリの探索に非常に便利です。以下に、glob
の特徴と実用例を説明します。
Globの特徴
シンプルなパターンマッチング
glob
は、UNIXシェルスタイルのワイルドカード(*
, ?
, []
)を使用して、ファイル名やディレクトリ名のパターンマッチングを行います。
再帰的検索
**
を使用することで、ディレクトリ階層を再帰的に検索することができます。これにより、深いディレクトリ構造の中から特定のパターンに一致するファイルを簡単に見つけることができます。
クロスプラットフォーム
glob
はWindows、macOS、Linuxなど、主要なオペレーティングシステムで動作します。
シンプルなAPI
glob
のAPIはシンプルで直感的なため、既存のスクリプトに簡単に統合できます。
例題1: ディレクトリ内のファイルをリストする
まず、glob
を使用して特定のディレクトリ内のファイルをリストする方法を示します。
import glob
# 現在のディレクトリ内のすべてのファイルをリスト
files = glob.glob('*')
print("現在のディレクトリ内のファイル:")
for file in files:
print(file)
このコードでは、現在のディレクトリ内のすべてのファイルをリストしています。glob.glob('*')
を使用して、ワイルドカード*
に一致するすべてのファイルとディレクトリを取得します。
例題2: 特定の拡張子のファイルをリストする
次に、特定の拡張子(例えば、.txt
)を持つファイルをリストする方法を示します。
import glob
# 現在のディレクトリ内のすべての.txtファイルをリスト
txt_files = glob.glob('*.txt')
print("現在のディレクトリ内の.txtファイル:")
for file in txt_files:
print(file)
このコードでは、現在のディレクトリ内のすべての.txt
ファイルをリストしています。glob.glob('*.txt')
を使用して、.txt
拡張子に一致するすべてのファイルを取得します。
例題3: サブディレクトリを再帰的に検索する
次に、サブディレクトリを再帰的に検索して特定のファイルを見つける方法を示します。
import glob
# サブディレクトリを再帰的に検索してすべての.txtファイルをリスト
txt_files_recursive = glob.glob('**/*.txt', recursive=True)
print("サブディレクトリを含むすべての.txtファイル:")
for file in txt_files_recursive:
print(file)
このコードでは、サブディレクトリを含むすべての.txt
ファイルをリストしています。glob.glob('**/*.txt', recursive=True)
を使用して、再帰的に.txt
拡張子に一致するファイルを取得します。
例題4: 特定の名前パターンに一致するファイルをリストする
次に、特定の名前パターン(例えば、data_*.csv
)に一致するファイルをリストする方法を示します。
import glob
# 特定の名前パターンに一致するファイルをリスト
csv_files = glob.glob('data_*.csv')
print("特定の名前パターンに一致する.csvファイル:")
for file in csv_files:
print(file)
このコードでは、名前がdata_
で始まり、.csv
で終わるファイルをリストしています。glob.glob('data_*.csv')
を使用して、特定の名前パターンに一致するファイルを取得します。
例題5: ファイルパスの詳細情報を取得する
最後に、ファイルパスの詳細情報(ディレクトリ名、ベース名、拡張子など)を取得する方法を示します。
import glob
import os
# すべてのファイルの詳細情報を表示
files = glob.glob('*')
print("ファイルパスの詳細情報:")
for file in files:
dirname = os.path.dirname(file)
basename = os.path.basename(file)
splitext = os.path.splitext(file)
print(f"ファイル: {file}")
print(f" ディレクトリ名: {dirname}")
print(f" ベース名: {basename}")
print(f" ファイル名と拡張子: {splitext}")
このコードでは、すべてのファイルについてファイルパスの詳細情報を表示しています。os.path.dirname
、os.path.basename
、およびos.path.splitext
を使用して、ファイルのディレクトリ名、ベース名、ファイル名と拡張子を取得します。
結論
glob
は、Pythonでファイルパターンマッチングを行うためのシンプルで強力なライブラリです。特定のパターンに一致するファイルやディレクトリを検索するための便利なツールを提供し、再帰的な検索や詳細情報の取得など、多様な用途に対応できます。glob
を活用することで、ファイルの一括処理やディレクトリの探索が効率的に行えるようになり、研究や開発におけるファイル管理が容易になります。