Vous pouvez définir name
et ext
en utilisant une expression de générateur interne:
results = [x for x, name, ext in ((x, *os.path.splitext(x)) for x in os.listdir(dir_path))
if ext == ".tif" and "abc" in name]
Ici, *os.path.splitext(x)
dépaquète résultat de cet appel aux variables name
et ext
dans la compréhension de la liste externe (uniquement dans Python 3). Pour les versions plus anciennes, vous pouvez utiliser (x,) + os.path.splitext(x)
à la place. Notez également que splitext
renverra un tuple (name, ext)
, pas (ext, name)
. Sinon, au lieu d'utiliser splitext
, vérifiez simplement le nom de fichier directement, en supposant que la partie que vous voulez trouver dans la partie nom ne peut pas apparaître dans la partie extension du nom de fichier.
results = [x for x in os.listdir(dir_path) if x.endswith(".tif") and "abc" in x]
Qu'est-ce que '' abc '' dans le nom d'ext, nom dans os.path.splitext (x) 'supposé vouloir dire? qu'est-ce que vous essayez d'accomplir ici? –
Voulez-vous dire: '[x pour x dans os.listdir (dir_path) si ext ==" .tif "et" abc "dans os.path.splitext (x) [1]]' ??? –
@ juanpa.arrivillaga oui merci, je voulais dire l'inverse. Et "abc" est juste un nom arbitraire. J'essaye de lister tous les fichiers qui ont "abc" dans le nom de fichier et en même temps ont l'extension ".tif" – MMagician