Carian Sub-Folder Rekursif dan Pengambilan Fail
Dalam bidang pengaturcaraan, melintasi direktori dan mendapatkan semula fail boleh menjadi tugas biasa. Satu pendekatan yang cekap ialah menggunakan algoritma rekursif untuk mencari melalui subfolder dan mengumpul senarai fail yang memenuhi kriteria tertentu.
Masalah yang Dihadapi
Seorang pengguna menghadapi sekatan jalan raya semasa cuba membina senarai fail tertentu dalam carian subfolder rekursif. Isu ini berpunca daripada pembolehubah subfolder menarik senarai subfolder dan bukannya folder semasa yang mengandungi fail.
Tujuan subFolder
Pembolehubah subFolder bertujuan untuk disimpan nama subfolder di bawah folder utama di mana fail yang dikehendaki terletak.
Resolusi
Kunci untuk menyelesaikan isu ini terletak pada memanfaatkan "root" atau pembolehubah "dirpath" dan bukannya "subFolder." Pembolehubah ini memegang laluan mutlak ke direktori semasa yang dilalui semasa rekursi. Dengan memasukkan laluan ini ke dalam pembinaan fileNamePath, ketepatan yang diingini boleh dicapai.
<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>
Peningkatan Modul Glob
Pendekatan alternatif dan cekap melibatkan penggunaan Python's modul glob terbina dalam. Glob cemerlang dalam memilih fail berdasarkan sambungannya.
<code class="python">import os from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>
Fungsi Penjana
Untuk pelaksanaan yang ringkas dan cekap, seseorang juga boleh menggunakan fungsi penjana.
<code class="python">from itertools import chain result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>
Penyelesaian Python 3.4
Jika anda menggunakan Python 3.4 atau lebih baru, anda boleh memanfaatkan fungsi rglob() modul pathlib.
<code class="python">from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>
Pendekatan ini menyediakan penyelesaian yang berkesan untuk mencari sub-folder secara rekursif dan menyusun senarai fail yang memenuhi kriteria yang diingini, menjadikan tugasan mendapatkan fail anda menjadi mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Sub-Folder Secara Rekursif dan Mengambil Fail dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!