Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie die Fallstricke von os.path.exits() in Python

So lösen Sie die Fallstricke von os.path.exits() in Python

WBOY
WBOYnach vorne
2023-05-16 17:58:271032Durchsuche

Problem

Manchmal sehen wir oft einen ähnlichen Code:

assert os.path.isdir(path_model_dir)
assert os.path.exits(path_model_dir)

Wenn Sie einen relativen Pfad als path_model_dir eingeben, hat dies katastrophale Folgen. Wir müssen auf die folgenden Elemente achten:

  • Die Methode os.path.exists() verwendet nicht direkt den Pfad in sys.path, um die Datei zu finden. Sie prüft, ob der angegebene Pfad vorhanden ist, indem sie den des Betriebssystems aufruft Schnittstelle vorhanden.

  • Wenn Sie einen relativen Pfad verwenden, interpretiert Python diesen zunächst als relativ zum aktuellen Arbeitsverzeichnis. Normalerweise ist das aktuelle Arbeitsverzeichnis eines interaktiven Interpreters das Verzeichnis, aus dem der Interpreter gestartet wurde.

Die beiden obigen Absätze erklären, dass, wenn Sie einen relativen Pfad eingeben, der hier erwähnte relative Pfad ein relativer Pfad relativ zur aktuellen Datei oder ein relativer Pfad relativ zum Interpreter ist, unabhängig davon, ob er relativ zur Ausführung des Interpreters ist oder Debugging-Interpreter oder relative Pfade über die Befehlszeile? Ich habe einmal Code im selben Editor bearbeitet und er konnte beim Ausführen direkt ausgeführt werden, beim Debuggen wurden jedoch weiterhin Fehler gemeldet. Später stellte ich fest, dass die relativen Pfade des Debugging-Interpreters und des laufenden Interpreters im selben Editor unterschiedlich waren (Überraschung). ! ).

Und die Methode os.path.exists() verwendet weder direkt den Pfad in sys.path, um Dateien zu finden, noch verwendet sie die Umgebungsvariablen in ~/.bashrc, um Dateien zu finden . Dateien finden.

Vorschläge

Es gibt zwei Vorschläge. Der Kernpunkt ist die Verwendung absoluter Pfade.

  • Schreiben Sie den absoluten Pfad direkt in die Zeichenfolge

  • (empfohlen) Verwenden Sie __file__, um den absoluten Pfad relativ zur Skriptdatei auszuschneiden

Einige Leute fragen nach dem in sys.path.append( Pfad) Wofür wird er verwendet? Tatsächlich wird der hier hinzugefügte Pfad hauptsächlich zum Importieren des Importpakets verwendet. Das heißt, wenn Sie zusätzliche Verzeichnisse zum Modulsuchpfad von Python hinzufügen möchten, können Sie diese Verzeichnisse zur Liste sys.path hinzufügen. Dies führt dazu, dass Python diese Verzeichnisse bei der Suche nach Modulen automatisch einbezieht. Beachten Sie jedoch, dass diese Methode verwendet wird, wenn Python das Modul importiert, nicht beim Aufruf der Methode os.path.exists().

Das obige ist der detaillierte Inhalt vonSo lösen Sie die Fallstricke von os.path.exits() in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen