【Python】globはどんなライブラリ?どういう時に便利?

Pythonでファイルやフォルダを扱う際、特定のパターンに一致するファイルをまとめて取得したいことがよくあります。

たとえば、「フォルダ内のすべての画像ファイルを一括で処理したい」「特定の拡張子のファイルだけを探したい」といった場合です。

そんな時に便利なのが、標準ライブラリのglobモジュールです。

この記事では「globとは何か?」「どんな場面で役立つのか?」について使い方や具体例を交えてわかりやすく解説していきます。

globとは

globは「ファイル名のパターンマッチング」を行うためのPython標準ライブラリです。

たとえば「*.txt」というパターンを指定すれば、カレントディレクトリ内の全ての「.txt」ファイルをリストアップできます。

ファイル名にワイルドカード( や ? など)を使って柔軟に検索できるのが特徴です。

インストール不要で、Pythonに標準で含まれているため、下記のように指定すれば簡単に使えます。

どんな時に便利?

globは次のような場面でとても便利です:

  • フォルダ内の特定の拡張子のファイルだけを一括取得したい
  • 名前に特定のパターンを含むファイルだけを探したい
  • フォルダ構成を再帰的に探索したい
  • バッチ処理やデータ前処理時にまとめてファイルを読み込みたい

たとえば、画像認識の学習データ用の画像ファイルだけを読み込みたい時や、毎日出力されるログファイルを日付でまとめて処理したい時などに活躍します。

使い方

基本的な使い方

まずはカレントディレクトリ内の.txtファイルをすべて取得する基本例です。

このコードでは、glob.glob('*.txt')がカレントディレクトリ内のtxtファイル名のリストを返します。

たとえば、フォルダ内にnote.txtdata.txtがあった場合、次のような結果になります:

特定のフォルダを指定する

次に、特定のフォルダ内のファイルを取得する例です。

たとえば「documentsフォルダ内の全ファイル」を取得したい場合は次のように書きます:

これで、documentsフォルダ内の全ファイルがリストで取得できます。

取得できるものは、ファイルだけでなくフォルダも含まれます。

ワイルドカードの使い方

globでは次のワイルドカードが使えます:

  • * :任意の文字列(0文字以上)に一致
  • ? :任意の1文字に一致
  • [] :指定した文字のいずれかに一致

例1:画像ファイル(pngまたはjpg)を取得

*.png*.jpgのパターンを組み合わせることで、pngとjpgの両方のファイルを取得できます。

例2:ファイル名の一部が特定の文字で終わるファイルを取得

この例では、logsフォルダ内でlog_2025-06-01.txtlog_2025-06-31.txtのようなファイルを取得できます。

??の部分は任意の2文字に一致します。

サブフォルダ(再帰的に取得)

サブフォルダも含めて全てのファイルを取得したい場合は、**を使います(Python 3.5以上推奨)。

recursive=Trueも指定します。

このコードでは、documentsフォルダ以下の全階層からtxtファイルを取得します。

たとえばdocumentsの中に2025/notes.txtがある場合、それもリストに含まれます:

globとos.listdirの違い

初心者が混乱しやすいのが、os.listdirとglobの違いです。

os.listdirglob.glob
フォルダ内の全ファイル・フォルダ名を取得パターン指定してファイル名を取得
サブフォルダ探索には対応していない**とrecursiveでサブフォルダ探索可能
ワイルドカードは使えないワイルドカードが使える

パターンで絞り込みたい場合はglobが便利です。

逆に「とりあえずフォルダ内の全ファイル名を取得したい」だけならos.listdirでもOKです。

まとめ

globはファイル名のパターンマッチングが簡単にできる標準ライブラリです。

こんな場面で特に役立ちます:

  • 特定の拡張子のファイルだけを一括取得したい
  • フォルダ構成を再帰的に探索したい
  • 名前にルールがあるファイル群をまとめて処理したい

しかもインストール不要なので、Pythonの標準機能だけで完結します。

ぜひデータ前処理やバッチ処理の時に活用してみてください。

作業がぐっと楽になりますよ。

おすすめの記事