Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mencari Sub-Folder Secara Rekursif dan Mengambil Fail dalam Python?

Bagaimana untuk Mencari Sub-Folder Secara Rekursif dan Mengambil Fail dalam Python?

Susan Sarandon
Susan Sarandonasal
2024-10-30 04:12:28162semak imbas

How to Recursively Search Sub-Folders and Retrieve Files in Python?

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!

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