Rechercher récursivement tous les fichiers avec plusieurs extensions spécifiées

Je veux rechercher jpg ou png en une seule fois. Même si je cherchais sur le net, je ne pouvais pas le faire en une seule ligne. Mais avec récursif, je ne pouvais pas le faire en une seule ligne ... C'est python2.7.

Non récursif

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]])

Un autre. Celui-ci était un peu plus rapide.

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]))

Récursif

・ Si le nombre est petit, c'est

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])

・ S'il y a beaucoup de fichiers, il sera difficile de faire une liste.

import os

#Préparer une fonction pour récupérer des fichiers de manière récursive avec yield
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

Rechercher récursivement tous les fichiers avec plusieurs extensions spécifiées
Rechercher des fichiers avec l'extension spécifiée
Extraire récursivement des fichiers zip avec python
Charger plusieurs fichiers JavaScript avec PyWebView
Générer tous les fichiers avec une extension spécifique
Supprimer tous les fichiers pyc dans le répertoire spécifié
Rechercher récursivement le répertoire spécifié pour voir le fichier
Configurer un module avec plusieurs fichiers dans Django
Convertissez plusieurs fichiers proto à la fois avec python
Comment lister les fichiers dans le répertoire spécifié (plusieurs conditions / recherche de sous-répertoire)
Recherche récursive de fichiers et de répertoires en Python et sortie
Supprimer les en-têtes de fichiers CSV à plusieurs formats avec python