Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich zuverlässig den Pfad des aktuell ausgeführten Python-Skripts ermitteln?
Den Pfad der aktuell ausgeführten Datei in Python finden
Das Ermitteln des Pfads zum aktuellen Ausführungsskript in Python ist entscheidend für den Zugriff auf Dateien und Durchführung verschiedener Operationen. Allerdings können mehrere Ansätze unter bestimmten Bedingungen scheitern. In diesem Artikel wird eine zuverlässige Methode zum Abrufen des Dateipfads in verschiedenen Szenarien untersucht.
Die Herausforderung mit vorhandenen Ansätzen
Häufig verwendete Methoden wie os.path.abspath(os. path.dirname(sys.argv[0])) und os.path.abspath(os.path.dirname(__file__)) haben Einschränkungen. sys.argv[0] stellt möglicherweise nicht den richtigen Pfad bereit, wenn es von einem anderen Python-Skript ausgeführt wird, während __file__ in py2exe-Skripten, IDLE, Mac OS Lösung
Um diese Probleme zu beheben, besteht ein zuverlässiger Ansatz darin, die Module inspect und os zu verwenden:
Mit getsourcefile(lambda:0) können Sie die Quelldatei von abrufen die aktuell ausgeführte Lambda-Funktion, wodurch die Einschränkungen anderer Methoden effektiv umgangen werden. Der Pfad wird dann mit abspath extrahiert.
<code class="python">from inspect import getsourcefile from os.path import abspath</code>
Beispielszenario
Betrachten Sie die folgende Verzeichnisstruktur:
a.pyC:. | a.py \---subdir b.pyenthält:
b.py
<code class="python">from inspect import getsourcefile from os.path import abspath print("a.py: File Path =", abspath(getsourcefile(lambda:0))) execfile("subdir/b.py")</code>enthält:
Beim Ausführen von a.py sollte Folgendes angezeigt werden:
<code class="python">from inspect import getsourcefile from os.path import abspath print("b.py: File Path =", abspath(getsourcefile(lambda:0)))</code>
Dies demonstriert die Fähigkeit, den Dateipfad in verschiedenen Situationen korrekt zu ermitteln.
Das obige ist der detaillierte Inhalt vonWie kann ich zuverlässig den Pfad des aktuell ausgeführten Python-Skripts ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!