[PYTHON] Durchsuchen Sie rekursiv alle Dateien mit mehreren angegebenen Erweiterungen

Ich möchte auf einmal nach JPG oder PNG suchen. Selbst wenn ich im Internet gesucht hätte, könnte ich es nicht in einer Zeile tun. Aber mit rekursiv konnte ich es nicht in einer Zeile machen ... Es ist Python2.7.

Nicht rekursiv

import glob
from compiler.ast import flatten

search_dir = "path/to/"
ext_list = ["jpg", "png"]

file_list = flatten([f for f in [glob.glob(search_dir + "*." + ext) for ext in ext_list]])

Ein weiterer. Dieser war etwas schneller.

import os
import glob
from itertools import chain

search_dir = "path/to/"
ext_list = ["jpg", "png"]

file_list = list(chain.from_iterable([glob.glob(os.path.join(search_dir, "*." + ext)) for ext in ext_list]))

Rekursiv

・ Wenn die Anzahl klein ist, ist dies

import os

search_dir = "path/to/"
ext_list = ["jpg", "png"]

file_list = []
for root, dirs, files in os.walk(search_dir):
    for ext in ext_list:
        file_list.extend([os.path.join(root, file) for file in files if ext in file])

・ Wenn viele Dateien vorhanden sind, ist es schwierig, eine Liste zu erstellen.

import os

#Bereiten Sie eine Funktion zum rekursiven Abrufen von Dateien mit Yield vor
def get_file_recursive(search_dir, ext_list):
    for root, dirs, files in os.walk(search_dir):
        for ext in ext_list:
            for file in [file for file in files if ext in file]:
                yield os.path.join(root, file)

search_dir = "path/to/"
ext_list = ["jpg", "png"]

file_list = get_file_recursive(search_dir, ext_list)

Recommended Posts

Durchsuchen Sie rekursiv alle Dateien mit mehreren angegebenen Erweiterungen
Suchen Sie nach Dateien mit der angegebenen Erweiterung
Extrahieren Sie Zip-Dateien rekursiv mit Python
Laden Sie mehrere JavaScript-Dateien mit PyWebView
Generieren Sie alle Dateien mit einer bestimmten Erweiterung
Löschen Sie alle pyc-Dateien im angegebenen Verzeichnis
Durchsuchen Sie das angegebene Verzeichnis rekursiv, um die Datei anzuzeigen
Konfigurieren Sie ein Modul mit mehreren Dateien in Django
Konvertieren Sie mehrere Protodateien gleichzeitig mit Python
So listen Sie Dateien im angegebenen Verzeichnis auf (Suche nach mehreren Bedingungen / Unterverzeichnissen)
Suchen Sie rekursiv nach Dateien und Verzeichnissen in Python und geben Sie sie aus
Entfernen Sie Überschriften aus CSV-Dateien mit mehreren Formaten mit Python