Cara Mencari Subfolder Secara Rekursif Secara Cekap untuk Jenis Fail Tertentu
Apabila membuat skrip, selalunya menjadi perlu untuk mencari secara mendalam melalui subfolder dalam folder utama . Dalam Python, fungsi os.walk boleh melintasi direktori secara rekursif. Walau bagaimanapun, mengekstrak hanya fail daripada jenis tertentu boleh menjadi rumit.
Dalam contoh yang diberikan, matlamatnya ialah untuk membuat senarai semua fail ".txt" dalam folder utama dan subfoldernya. Kod ini menggunakan os.walk untuk mengulangi semua fail dan subfolder, tetapi subFolder menyimpan senarai subfolder dan bukannya subfolder yang betul untuk setiap fail.
Untuk menyelesaikannya, pembolehubah "root", yang mewakili semasa laluan direktori, harus digunakan dan bukannya subFolder. Setiap fail mempunyai akar yang sepadan, yang menunjukkan lokasinya dalam sistem fail.
Berikut ialah penyelesaian yang dioptimumkan:
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']
Kod ini berulang melalui semua direktori akar, subdirektori dan fail dalam folder PATH. Fail dengan sambungan ".txt" ditambahkan pada senarai hasil.
Sebagai alternatif, modul glob boleh memudahkan pemilihan berasaskan sambungan:
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
Untuk Python 3.4 , penyelesaian yang lebih ringkas menggunakan Pathlib tersedia:
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
Penyelesaian ini dengan cekap mencari subfolder, mengekstrak fail berdasarkan sambungan dan mengembalikannya sebagai senarai.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Semua Fail \'.txt\' dalam Subfolder Menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!