Bagaimana untuk Cekap Mencari Semua Fail \'.txt\' dalam Subfolder Menggunakan Python?

Patricia Arquette
Lepaskan: 2024-10-29 19:28:02
asal
859 orang telah melayarinya

How to Efficiently Find All

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

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

Untuk Python 3.4 , penyelesaian yang lebih ringkas menggunakan Pathlib tersedia:

from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))
Salin selepas log masuk

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!

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!