Recherche d’un motif (expression régulière) dans les fichiers de l’arborescence d’un dossier.
Remarque les fichiers sont fournis sous forme de motif (regex) ce qui permet de ne parcourir qu’une famille de fichiers.
#-*-coding: utf-8-*- import glob import re,os def listdir(path, regx_fichier): """ retourne tous les fichiers du dossier et de ses sous dossiers correspondant au motif. Si le motif est '' retourne tous les fichiers ATTENTION: le motif du fichier est une expression régulière """ import glob import os import re fichier=[] l = glob.glob(path+'\\*') for i in l: if os.path.isdir(i): fichier.extend(listdir(i,regx_fichier)) else: if regx_fichier: if re.match(regx_fichier,os.path.split(i)[-1],re.I): fichier.append(i) else: fichier.append(i) return fichier def recherche(pathRoot, regx_fichier, regx_expr): """ recherche d'une expression regulière dans les fichiers contenus dans le dossier pathRoot ou un de ses sous dossiers ATTENTION: le motif du fichier est une expression régulière """ if not os.path.exists(pathRoot): print 'Le chemin fourni est inaccessible' exit() regex= re.compile(regx_expr,re.I) fichiers=listdir(pathRoot,regx_fichier) F=[] for f in fichiers: txt= open(f,'r').read() match=regex.findall(txt) if match: F.append(f) print f for s in regex.findall(txt): print '\t',s print '%i FICHIERS PARCOURUS\nLISTE DES FICHIERS CONTENANT LE MOTIF'% len(fichiers) print for f in F: print f def rgx_fichier(ext): """ Construit l'expression regulière correspondant à l'extension fournie """ return r'.*\.'+ext # USAGE # recherche(r'c:\home',rgx_fichier('py'),'ht..') recherche (r'/','.*\.sql','USE\t.*')