はじめに
Pythonは、シンプルでわかりやすい構文と豊富な機能を持つプログラミング言語として、多くの開発者に愛されています。Pythonの魅力の1つは、標準ライブラリが非常に充実していることです。その中でも、ファイル操作を行う際に便利なモジュールの1つがglobモジュールです。この記事では、globモジュールの基本的な使い方から応用的な活用方法までを詳しく解説します。
1. globモジュールとは
globモジュールは、ファイルやディレクトリをパターンに基づいて検索するためのPython標準ライブラリです。ディレクトリ内のファイルを一括で取得したり、特定の条件に合致するファイルを絞り込んだりするのに便利です。
2. 基本的な使い方
ファイルの取得
globモジュールを使って、特定のパターンにマッチするファイルを取得することができます。例えば、以下のようにしてテキストファイルを取得します。
pythonCopy codeimport glob
text_files = glob.glob("*.txt")
print(text_files)
このコードでは、カレントディレクトリにある拡張子が.txtの全てのファイルを取得しています。
パターンマッチング
globモジュールでは、ワイルドカードを使用してパターンマッチングができます。ワイルドカード*は任意の文字列にマッチし、?は任意の一文字にマッチします。
pythonCopy codeimport glob
matching_files = glob.glob("201?.txt")
print(matching_files)
この例では、ファイル名が「201」で始まり、その後に1文字の任意の数字が続く.txtファイルを取得しています。
ディレクトリの指定
globモジュールはデフォルトではカレントディレクトリを対象としますが、任意のディレクトリを指定することもできます。
pythonCopy codeimport glob
files_in_subdir = glob.glob("my_directory/*.txt")
print(files_in_subdir)
この例では、my_directoryディレクトリ内のすべての.txtファイルを取得しています。
3. ファイルフィルタリングのテクニック
拡張子によるフィルタリング
特定の拡張子を持つファイルのみを取得する場合、globモジュールのパターンに拡張子を指定します。
pythonCopy codeimport glob
png_files = glob.glob("images/*.png")
print(png_files)
この例では、imagesディレクトリ内のすべての.pngファイルを取得しています。
複数条件の指定
複数の条件を指定してファイルを絞り込むことも可能です。[...]を使用して条件を指定します。
pythonCopy codeimport glob
filtered_files = glob.glob("documents/*.[txt|docx]")
print(filtered_files)
この例では、documentsディレクトリ内の.txtまたは.docxファイルを取得しています。
4. 再帰的なファイル検索
globモジュールは、ディレクトリ内のファイルを検索する際に再帰的な検索をサポートしています。再帰的なファイル検索とは、指定したディレクトリだけでなく、そのサブディレクトリや更にそのサブディレクトリ以下までを探索してファイルを見つける機能のことを指します。
再帰的なファイル検索を行うには、パターンに**を使用します。**は任意のディレクトリを表すワイルドカードであり、これを組み合わせることでサブディレクトリ以下を再帰的に検索します。
以下は、再帰的なファイル検索を行う例です。
pythonCopy codeimport glob
all_files = glob.glob("my_directory/**/*.txt", recursive=True)
print(all_files)
この例では、my_directoryディレクトリ以下にある全ての.txtファイルを再帰的に取得しています。recursive=Trueのオプションを指定することで、再帰的な検索が有効になります。
再帰的なファイル検索は、深い階層にあるファイルを一括で取得したい場合などに便利ですが、注意が必要です。検索対象となるディレクトリが非常に大きい場合や、ファイルの階層が非常に深い場合は、パフォーマンスに影響を及ぼす可能性があります。適切なフォルダ構造や検索範囲を考慮して利用することが重要です
まとめ
Pythonのglobモジュールは、ファイルの検索や絞り込みに非常に便利なツールです。ワイルドカードを使った柔軟なパターンマッチングや再帰的なファイル検索など、さまざまなテクニックを駆使することで、効率的にファイル操作を行うことができます。Pythonプログラマーならぜひマスターしておきたいモジュールの一つです。
コメント