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

Barbara Streisand
Lepaskan: 2024-10-31 22:07:17
asal
656 orang telah melayarinya

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

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

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

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

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

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!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!