Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Cara Terbaik untuk Mencari Fail Secara Rekursif dalam Python?

Apakah Cara Terbaik untuk Mencari Fail Secara Rekursif dalam Python?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 05:34:09498semak imbas

What's the Best Way to Recursively Find Files in Python?

Mencari Fail Secara Rekursif dengan Kaedah Berbeza

Apabila mencari fail secara rekursif dalam struktur direktori, glob() mungkin bukan yang paling cekap atau pendekatan menyeluruh. Artikel ini meneroka kaedah alternatif untuk mencapai penyenaraian fail rekursif:

pathlib.Path().rglob()

Modul pathlib memperkenalkan pathlib.Path().rglob( ), yang mencari fail yang sepadan secara rekursif. Contoh:

from pathlib import Path

for path in Path('src').rglob('*.c'):
    print(path.name)

glob.glob() dengan recursive=True

Untuk versi Python sebelum 3.5, glob.glob() menawarkan pilihan rekursif. Contoh:

from glob import glob

for filename in glob('src/**/*.c', recursive=True):
    print(filename)

os.walk()

Untuk versi Python yang lebih lama, os.walk() digabungkan dengan fnmatch.filter() menyediakan carian rekursif. Contoh:

import fnmatch
import os

matches = []
for root, dirnames, filenames in os.walk('src'):
    for filename in fnmatch.filter(filenames, '*.c'):
        matches.append(os.path.join(root, filename))

Kaedah os.walk() berulang melalui semua subdirektori, manakala fnmatch.filter() menggunakan padanan corak mudah. Pendekatan ini mungkin lebih cekap untuk direktori besar kerana overhed yang lebih rendah berbanding pathlib.

Atas ialah kandungan terperinci Apakah Cara Terbaik untuk Mencari Fail Secara Rekursif dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn