Pythonでファイル操作を始めたいけれど、何から手を付ければ良いか分からない…そんなあなたに、glob モジュールを使った簡単なファイル検索方法をご紹介します。
glob モジュールを使えば、特定のパターンに合致するファイルやフォルダを簡単に見つけることができます。プログラミング初心者の方でもすぐに使える基本的な使い方を、分かりやすく解説します。
この記事で学べること
globモジュールの基本的な役割glob.glob()関数の使い方*、?などの基本的なワイルドカードの使い方- カレントディレクトリ内のファイル検索方法
globって何? ざっくり解説
glob モジュールは、Pythonでファイルやフォルダの名前を、簡単なルール(パターン)を使って探すための道具です。
例:
- 「拡張子が
.txtのファイルだけ見つけたい!」 - 「ファイル名の先頭が
report_のファイルを見つけたい!」
このような場合に便利です。
基本の呪文:glob.glob() 関数
glob モジュールの中心となるのは、glob.glob() という関数です。この関数に探したいファイル名のパターンを文字列で教えてあげると、条件に合ったファイルやフォルダの名前をリスト形式で返してくれます。
まずはインポート!
import glob
基本的な使い方
現在のフォルダにあるすべてのファイルとフォルダの名前を知りたい場合は、パターンとして * を指定します。* は「何でも良い」という意味のワイルドカードです。
import glob
files = glob.glob('*')
print(files)
コード解説:
files = glob.glob('*'):glob.glob()関数に'*'というパターンを渡しています。*はすべてのファイルやフォルダにマッチするため、現在のフォルダにあるすべての項目名がリストとしてfiles変数に格納されます。print(files):files変数に格納されたリストの内容(現在のフォルダのファイルとフォルダの名前)を画面に出力します。
特定の拡張子のファイルを探す
拡張子が .txt のファイルだけを探したい場合は、パターンを '*.txt' とします。
import glob
txt_files = glob.glob('*.txt')
print(txt_files)
コード解説:
txt_files = glob.glob('*.txt'):glob.glob()関数に'*.txt'というパターンを渡しています。*は任意の文字列にマッチし、.txtは拡張子が.txtであることを示します。したがって、現在のフォルダにある拡張子が.txtのすべてのファイル名がリストとしてtxt_files変数に格納されます。print(txt_files):txt_files変数に格納されたリストの内容(拡張子が.txtのファイル名)を画面に出力します。
ファイル名の一部が一致するものを探す
ファイル名が data で始まる .csv ファイルを探したい場合は、パターンを 'data*.csv' とします。
import glob
csv_files = glob.glob('data*.csv')
print(csv_files)
コード解説:
csv_files = glob.glob('data*.csv'):glob.glob()関数に'data*.csv'というパターンを渡しています。dataで始まり、その後に任意の文字列が続き、.csvで終わるファイル名がリストとしてcsv_files変数に格納されます。print(csv_files):csv_files変数に格納されたリストの内容(dataで始まる.csvファイル名)を画面に出力します。
覚えておきたいワイルドカード
glob モジュールでよく使うワイルドカードは以下の2つです。
*: 0個以上の任意の文字にマッチします。(例:*.txt、data*)?: 任意の1文字にマッチします。(例:file?.log)
例:file の後に何か1文字が来て、.txt で終わるファイルを探す
import glob
specific_files = glob.glob('file?.txt')
print(specific_files)
コード解説:
specific_files = glob.glob('file?.txt'):glob.glob()関数に'file?.txt'というパターンを渡しています。fileで始まり、その後に任意の1文字が続き、.txtで終わるファイル名がリストとしてspecific_files変数に格納されます。例えば、file1.txtやfilea.txtはマッチしますが、file12.txtはマッチしません。print(specific_files):specific_files変数に格納されたリストの内容を出力します。
まとめ:globでファイル検索を始めよう!
この初級編では、glob モジュールの基本的な使い方と、*、? という2つのワイルドカードを使ったファイル検索の方法を学びました。glob を使えば、簡単なパターンでファイルやフォルダを効率的に見つけることができます。
次の記事(中級編)では、さらに高度なワイルドカードの使い方や、サブフォルダの検索方法について解説します。

コメント