概要
Python
では、特定の拡張子(例えば.txt
)を持つファイルをディレクトリ内から検索する方法がいくつかあります。os
モジュール、glob
モジュール、そしてpathlib
モジュールを使ってファイルを検索するのが一般的です。それぞれのアプローチには特徴があり、用途に応じて使い分けが可能です。
glob
を使った検索
glob
モジュールを使用すると、パターンマッチングで簡単に特定の拡張子のファイルを検索できます。
import glob
files = glob.glob('*.txt')
print(files)
再帰的に検索するには、Python
3.5以降でサポートされているrecursive=True
オプションを使います。
files = glob.glob('/*.txt', recursive=True)
print(files)
os
モジュールを使った検索
os.listdir
でディレクトリ内のファイルを取得し、endswith
でファイル拡張子をフィルタリングすることもできます。
import os
files = [f for f in os.listdir('.') if f.endswith('.txt')]
print(files)
再帰的な検索にはos.walk
を使用します。
for root, dirs, files in os.walk('.'):
for file in files:
if file.endswith('.txt'):
print(os.path.join(root, file))
pathlib
を使った検索
pathlib
はPython
3.4以降で利用できる便利なモジュールです。Path.glob
でシンプルにファイル検索ができ、再帰的な検索もrglob
で実現可能です。
from pathlib import Path
files = list(Path('.').glob('*.txt'))
print(files)
再帰的に検索する場合は次のようにします。
files = list(Path('.').rglob('*.txt'))
print(files)
結論
Python
で特定の拡張子のファイルを検索する方法として、glob
, os
, pathlib
のいずれかを使用できます。再帰的な検索が必要な場合はos.walk
やpathlib.Path().rglob()
が便利で、シンプルな検索にはglob
やlistdir
が適しています。用途に応じて使い分けましょう。