Restez simple :
import os
relevant_path = "[path to folder]"
included_extensions = ['jpg','jpeg', 'bmp', 'png', 'gif']
file_names = [fn for fn in os.listdir(relevant_path)
if any(fn.endswith(ext) for ext in included_extensions)]
Je préfère cette forme de compréhension de liste car elle se lit bien en anglais.
Je lis la quatrième ligne comme : Pour chaque fn dans os.listdir pour mon chemin, donnez-moi seulement ceux qui correspondent à l'une de mes extensions incluses.
Il peut être difficile pour les programmeurs python novices de s'habituer à l'utilisation des compréhensions de listes pour le filtrage, et il peut y avoir une surcharge de mémoire pour les très grands ensembles de données, mais pour lister un répertoire et d'autres tâches simples de filtrage de chaînes, les compréhensions de listes conduisent à un code plus propre et documentable.
Le seul inconvénient de cette conception est qu'elle ne vous protège pas contre l'erreur de passer une chaîne de caractères au lieu d'une liste. Par exemple, si vous convertissez accidentellement une chaîne de caractères en liste et que vous vous retrouvez à vérifier tous les caractères d'une chaîne de caractères, vous risquez d'obtenir un grand nombre de faux positifs.
Mais il est préférable d'avoir un problème facile à résoudre qu'une solution difficile à comprendre.
0 votes
[Ce lien pourrait vous aider :) Obtenir une liste filtrée des fichiers d'un répertoire ]( codereview.stackexchange.com/a/33642 )
0 votes
Notez que vous pouvez apporter un soin particulier à l'ordre de tri si cela est important pour votre application.