Python: 特定の拡張子のファイル一覧を(再帰的に)取得 glob()
Pythonで「*.html」や「*.txt」など特定の拡張子のファイル一覧を
取得したい場合はglobモジュールのglob関数を使用します。
ワイルドカードの「*」と「?」を使用することができ、
例えばhtmlファイルを取得したい場合は「*.html」と記述します。
glob関数の引数に「recursive=True」を指定することで 再帰的に取得することもできます。
glob()関数の基本的な使い方
次のサンプルコードでは「*.py」と指定して、 Pythonファイルの一覧を取得しています。
import glob path = "./*.py" files = glob.glob(path) print(files)
実行結果
['.\\test.py', '.\\test2.py']
パスを相対パスで指定した場合、 戻ってくるファイルも相対パスになります。
次はパスを絶対パスで指定してみます。
import glob path = "D:\\test\\python\\*.py" files = glob.glob(path) print(files)
実行結果
['D:\\test\\python\\test.py', 'D:\\test\\python\\test2.py']
絶対パスで指定した場合は、 戻ってくるファイルも絶対パスとなります。
再帰的にファイル一覧を取得する
glob関数を使って再帰的にファイル一覧を取得する場合、 引数に「recursive = True」を指定します。
例えば「D:\\test」ディレクトリ以下にある「*.txt」を 再帰的に取得したい場合は次のように記述します。
glob.glob("D:\\test\\**\\*.txt", recursive = True) または glob.glob("D:/test/**/*.txt", recursive = True)
上のように指定した場合、 パス引数の「**」はあらゆるディレクトリにマッチして、 再帰的に検索します。 太字で示した「\\**」又は「/**」と「recursive = True」がポイントです。
glob関数を使った再帰的な検索のサンプルコードです。
import glob path = "D:\\test\\**\\*.txt" files = glob.glob(path, recursive = True) print(files) # 実行結果 ['D:\\test\\test.txt', 'D:\\test\\sample.txt', 'D:\\test\\python\\a.txt', 'D:\\test\\powershell\\b.txt']