Comment limiter os.walk
pour ne renvoyer que les fichiers dans le répertoire que je lui donne ?
def _dir_list(self, dir_name, whitelist):
outputList = []
for root, dirs, files in os.walk(dir_name):
for f in files:
if os.path.splitext(f)[1] in whitelist:
outputList.append(os.path.join(root, f))
else:
self._email_to_("ignorer")
return outputList
3 votes
Un autre cas où la multitude d'approches possibles et tous les avertissements qui les accompagnent suggèrent que cette fonctionnalité devrait être ajoutée à la bibliothèque standard Python.
0 votes
files_with_full_path = [f.path for f in os.scandir(dir) if f.is_file()]
. Si vous avez seulement besoin des noms de fichiers utilisezf.name
au lieu def.path
. C'est la solution la plus rapide et beaucoup plus rapide que n'importe quellewalk
oulistdir
, voir stackoverflow.com/a/40347279/2441026.