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

Susan Sarandon
Lepaskan: 2024-10-30 04:12:28
asal
183 orang telah melayarinya

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

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

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

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

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!

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!