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
を使えば、簡単なパターンでファイルやフォルダを効率的に見つけることができます。
次の記事(中級編)では、さらに高度なワイルドカードの使い方や、サブフォルダの検索方法について解説します。
コメント