ich habe eine Walk Funktion in meinem Code, um einen Verzeichnisbaum nach einem bestimmen Wort zu suchen,sprich er öffnet alle Dateien und prüft sie.
Jedoch habe ich diese Walk als rekursiv und das erweist sich bei komplexen Verzeichnissen als sehr lange...
Wie kann ich diese iterativ machen? Er will nämlich immer 3 Argumente haben bei der walk Funktion...
Aber der Code an sich läuft so, nur es könnte bei großen Mengen lange dauern :/
Mein Code:
Code: Alles auswählen
def __funcSearch(self,key,verzeichnis,data):
# data ist ausfuehrlich: data=listdir(verzeichnis), sprich eine Liste der Unterverzeichnisse
'''Suche nach Dateien, die das Schluesselwort enthalten'''
chdir(verzeichnis) #in das angegebene Verzeichnis wechseln
for datei in data:
if path.isfile(datei):
f=file(datei,'r')
list=f.readlines()
f.close()
for l in list:
self.__line+=1
if key in l:
self.__errList+=[(self.__line,datei)]
self.__line=0
def search(self):
walk(self.__path,self.__funcSearch,self.__key) #rekursiver Aufruf von funcSearch in jedem neuen Verzeichnis