Python の glob モジュールを使用してパターンでファイルを検索する方法

Python の glob モジュールは、指定されたパターンに一致するファイルやディレクトリを見つけるための強力なツールです。ディレクトリ内で特定の拡張子や名前を持つファイルを検索する必要がある場合に特に便利です。この記事では、glob モジュールを使用してファイルを効率的に見つける方法について説明します。

glob モジュールの紹介

glob モジュールは、Unix シェル スタイルのワイルドカードを使用してファイルとディレクトリを一覧表示する方法を提供します。これは、ファイル検索、バッチ処理などのタスクに役立ちます。このモジュールには、ファイル名をパターンと一致させる関数が含まれており、ファイル管理が容易になります。

globの基本的な使い方

glob モジュールを使用するには、それをインポートしてから、glob.glob() 関数を使用してパターンに一致するファイルを検索する必要があります。使用するパターンには、* (任意の数の文字に一致) や ? (1 つの文字に一致) などのワイルドカードを含めることができます。

特定の拡張子を持つファイルを検索する

たとえば、ディレクトリ内の .txt 拡張子を持つすべてのファイルを検索するには、次のようにします。

import glob

# Find all .txt files in the current directory
txt_files = glob.glob('*.txt')
print(txt_files)

サブディレクトリ内のファイルの検索

サブディレクトリ内の特定の拡張子を持つすべてのファイルを検索するには、パターンでサブディレクトリを指定します。

import glob

# Find all .jpg files in the 'images' subdirectory
jpg_files = glob.glob('images/*.jpg')
print(jpg_files)

ワイルドカードの使用

ワイルドカードを使用すると、より広範囲のファイルを一致させることができます。たとえば、"report" で始まるすべてのテキスト ファイルを検索するには、次のようにします。

import glob

# Find all files starting with 'report' and ending with .txt
report_files = glob.glob('report*.txt')
print(report_files)

複数の拡張子を持つファイルの検索

複数のワイルドカード一致を含むパターンを使用して、glob を使用して複数の拡張子を持つファイルを検索することもできます。

import glob

# Find all .txt and .md files
files = glob.glob('*.txt') + glob.glob('*.md')
print(files)

高度な使用法

単純なパターンに加えて、glob モジュールはより複雑なパターンもサポートします。たとえば、** のようなパターンを使用してディレクトリを再帰的に検索できます。

再帰検索

すべてのサブディレクトリでファイルを再帰的に検索するには、** パターンと recursive=True 引数を使用します。

import glob

# Find all .py files in the current directory and subdirectories
py_files = glob.glob('**/*.py', recursive=True)
print(py_files)

結論

glob モジュールは、Python でファイルを管理するための必須ツールであり、パターンを使用してファイルを簡単に検索できます。特定のファイル タイプを操作する場合、ディレクトリを検索する場合、または複雑な検索を実行する場合、glob はシンプルで効果的なソリューションを提供します。