Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Dùng glob() đệ quy tìm file trong Python (recursive glob)

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)