Module glob hỗ trợ pattern ** đệ quy từ Python 3.5+ (cần recursive=True).
Ví dụ
import glob
# Tìm tất cả file .py đệ quy
for filepath in glob.iglob('src/**/*.py', recursive=True):
print(filepath)
# iglob = iterator (lazy), glob = list (eager)
Pattern phổ biến
**/*.py— tất cả file .py đệ quy.**/— tất cả thư mục đệ quy.**— tất cả file và thư mục đệ quy.
Python cũ (< 3.5): os.walk
import os, re
pattern = r'.*\.py$'
for root, dirs, files in os.walk('src'):
for f in files:
if re.match(pattern, f):
print(os.path.join(root, f))
pathlib (Python 3.5+)
from pathlib import Path
for f in Path('src').rglob('*.py'):
print(f)