Rekursive Rückgabe eines Pfads in Python
In Python ist beim Versuch, einen Pfad von einer rekursiven Funktion zurückzugeben, ein Problem aufgetreten. Stattdessen erhalten Sie im Ergebnis None.
Der bereitgestellte Code versucht, ein Wörterbuch zu durchlaufen, das eine Dateisystemstruktur darstellt, und nach einer durch rqfile angegebenen Datei zu suchen. Der Pfad zu dieser Datei sollte zurückgegeben werden, wenn er gefunden wird.
Die Hauptursache des Problems besteht darin, dass die Funktion bei der Rekursion durch das Wörterbuch versucht, None im else-Zweig zurückzugeben, wenn sie auf einen Nicht-Wörterbuch-Wert stößt. Dadurch wird die Funktion vorzeitig beendet, was dazu führt, dass None zurückgegeben wird.
Um dies zu beheben, müssen Sie das Ergebnis des rekursiven Aufrufs konsistent zurückgeben:
for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: # Remove unnecessary else block return get_path(directory[filename], rqfile, path)
Dieser Code garantiert, dass die Funktion zurückkehrt der Pfad, wenn er gefunden wurde, oder das Ergebnis des rekursiven Aufrufs, wenn der aktuelle Pfad nicht der gesuchte ist. Alternativ können Sie auch den Randfall behandeln, bei dem rqfile im aktuellen Pfad nicht vorhanden ist:
for filename in dictionary.keys(): path = prefix + [filename] if not isinstance(dictionary[filename], dict): if rqfile in str(os.path.join(*path)): return str(os.path.join(*path)) else: return None return get_path(directory[filename], rqfile, path)
Durch die Implementierung einer dieser Lösungen gibt Ihre Funktion den Pfad zur angeforderten Datei korrekt zurück oder „Keine“, wenn dies der Fall ist nicht gefunden.
Das obige ist der detaillierte Inhalt vonWarum gibt meine rekursive Python-Funktion „Keine' zurück, wenn ich versuche, einen Pfad zu finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!