Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menyenaraikan Semua Fail Secara Rekursif dalam Direktori Menggunakan Python?

Bagaimanakah Saya Boleh Menyenaraikan Semua Fail Secara Rekursif dalam Direktori Menggunakan Python?

Barbara Streisand
Barbara Streisandasal
2024-12-19 17:21:10842semak imbas

How Can I Recursively List All Files in a Directory Using Python?

Lelaran ke atas Fail Secara Rekursif

Merentasi struktur direktori secara rekursif untuk menyenaraikan semua fail ialah keperluan pengaturcaraan biasa. Dalam konteks ini, mari kita terokai cara untuk mencapai ini dengan cekap dalam Python.

Satu pendekatan menggunakan kaedah pathlib.Path().rglob(), yang diperkenalkan dalam Python 3.5. Ia menyediakan cara yang mudah untuk mengenal pasti semua fail yang sepadan dengan corak tertentu dalam direktori dan subdirektorinya:

from pathlib import Path

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

Jika anda lebih suka menggunakan modul glob, anda boleh memanfaatkan fungsi glob()nya dengan rekursif=True argumen:

from glob import glob

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

Pilihan lain, serasi dengan versi Python yang lebih lama, melibatkan penggunaan os.walk() untuk traversal rekursif dan fnmatch.filter() untuk padanan corak:

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))

Teknik os.walk() mungkin terbukti lebih pantas dalam senario dengan kiraan fail yang banyak disebabkan oleh overhed yang lebih rendah yang dikaitkan dengan modul pathlib.

Mana-mana pendekatan yang anda pilih, kaedah ini akan membantu anda dalam mengenal pasti dan menyenaraikan fail secara rekursif dalam direktori tertentu dan subfolder.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyenaraikan Semua Fail Secara Rekursif dalam Direktori Menggunakan 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