web-dev-qa-db-fra.com

Python: le nom de fichier contient String (metachar?)

J'utilise os.walk (répertoire) pour afficher récursivement tous les fichiers de ce répertoire. Le truc, c'est que j'ai besoin de montrer uniquement les fichiers qui contiennent une chaîne demandée dans son nom, et il doit aussi gérer les métachars.

Ce que j'ai maintenant c'est:

for root, subdirs, files in os.walk(dir1):
        for filename in files:
            if substring in filename:
                name_path = os.path.join(root,filename)
                list.insert(END, name_path)

Cela fonctionne bien, mais si substring = *, comme je n'ai pas de fichiers contenant un '*', ma liste est vide.

Alors, comment puis-je faire fonctionner cela si substring contient un METACHAR?

7
Croc
9
Brian

Vous pouvez utiliser glob. Il est très pratique et similaire de trouver une commande sous Linux.

import glob
glob.glob("/home/user/*.txt")

Recherche dans plusieurs sous-répertoires

glob.glob("/home/user/*/*.txt")

ou

glob.glob("/home/user/logs?.txt")
1
amyst