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