Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menyenaraikan Fail dengan Cekap daripada Subfolder Rekursif dalam Python?

Bagaimana untuk Menyenaraikan Fail dengan Cekap daripada Subfolder Rekursif dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-10-31 22:07:17642semak imbas

How to Efficiently List Files from Recursive Subfolders in Python?

Carian Subfolder Rekursif ke Senarai Fail: Cara Memperhalusi Proses

Apabila mencari melalui subfolder dan membina senarai jenis fail tertentu, adalah penting untuk memastikan bahawa subfolder pembolehubah menunjuk ke folder yang betul. Coretan kod berikut menunjukkan isu ini:

<code class="python">for root, subFolder, files in os.walk(PATH):
    for item in files:
        if item.endswith(".txt"):
            fileNamePath = str(os.path.join(root, subFolder, item))</code>

Di sini, pembolehubah subFolder mengandungi senarai subfolder dan bukannya folder tempat fail ITEM berada. Untuk membetulkan ini, kita boleh menggunakan dirpath, yang diwakili oleh pembolehubah akar, kerana ia memegang laluan direktori yang betul. Coretan kod yang diubah suai ini menangani isu:

<code class="python">import os
result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']</code>

Satu lagi pendekatan elegan ialah menggunakan modul glob, yang memilih fail dengan cekap berdasarkan sambungannya:

<code class="python">from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>

Tawaran Python 3.4 dan ke atas versi penjana bagi penyelesaian berasaskan glob:

<code class="python">from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>

Akhir sekali, untuk Python 3.4 , pendekatan moden menggunakan modul pathlib ialah:

<code class="python">from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>

Atas ialah kandungan terperinci Bagaimana untuk Menyenaraikan Fail dengan Cekap daripada Subfolder 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