by Anonymous » 17 Aug 2025, 02:28
Dieses kleine Skript findet Dateien und Ordner, indem sie rekursiv durch Verzeichnisstrukturen analysiert und die von ihnen gespeicherten Pfade zurückgegeben werden. Dies geschah, um einen Ordner auf meinem D -Laufwerk zu finden. Während der Code effektiv funktioniert, ist die Laufzeit ziemlich langsam. Ich habe das os.walk -Alternative untersucht, aber es scheint einige Sekunden langsamer als mein manueller rekursiver Code. Ich würde mich über Ihr Feedback darüber freuen, wie ich es optimieren kann, um schneller zu laufen. Danke. < /P>
Code: Select all
import os
import re
rootPath = 'C:\\'
search = input("Enter file you are looking for ")
escaped = re.escape(search)
pattern = re.compile(escaped.replace(r"\ ", r"\s*"), re.IGNORECASE)
def recursiveDirFinder(root,target):
dirs = os.listdir(root)
for dir in dirs:
try:
path = os.path.join(root,f"{dir}\\")
if target.search(dir):
print(path)
else:
if os.path.isdir(path):
recursiveDirFinder(path,target)
else:
continue
except UnicodeEncodeError:
#print(f"Error processing {dir}")
continue
except PermissionError:
#print(f"{dir} cannot be accessed")
continue
except OSError:
continue
recursiveDirFinder(rootPath,pattern)
Dieses kleine Skript findet Dateien und Ordner, indem sie rekursiv durch Verzeichnisstrukturen analysiert und die von ihnen gespeicherten Pfade zurückgegeben werden. Dies geschah, um einen Ordner auf meinem D -Laufwerk zu finden. Während der Code effektiv funktioniert, ist die Laufzeit ziemlich langsam. Ich habe das os.walk -Alternative untersucht, aber es scheint einige Sekunden langsamer als mein manueller rekursiver Code. Ich würde mich über Ihr Feedback darüber freuen, wie ich es optimieren kann, um schneller zu laufen. Danke. < /P>
[code]import os
import re
rootPath = 'C:\\'
search = input("Enter file you are looking for ")
escaped = re.escape(search)
pattern = re.compile(escaped.replace(r"\ ", r"\s*"), re.IGNORECASE)
def recursiveDirFinder(root,target):
dirs = os.listdir(root)
for dir in dirs:
try:
path = os.path.join(root,f"{dir}\\")
if target.search(dir):
print(path)
else:
if os.path.isdir(path):
recursiveDirFinder(path,target)
else:
continue
except UnicodeEncodeError:
#print(f"Error processing {dir}")
continue
except PermissionError:
#print(f"{dir} cannot be accessed")
continue
except OSError:
continue
recursiveDirFinder(rootPath,pattern)
[/code]