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
Lepaskan: 2024-12-19 05:34:09
asal
562 orang telah melayarinya

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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))
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan