Heim >Backend-Entwicklung >Python-Tutorial >Wie können Sie den Pfad der Ausführungsdatei in Python zuverlässig bestimmen?

Wie können Sie den Pfad der Ausführungsdatei in Python zuverlässig bestimmen?

DDD
DDDOriginal
2024-10-25 09:14:29972Durchsuche

How Can You Reliably Determine the Execution File's Path in Python?

Bestimmen des Pfads der Ausführungsdatei in Python

Einführung

Die Identifizierung des Pfads zum aktuell ausgeführten Python-Skript ist ein entscheidender Aspekt für verschiedene Anwendungen. Es kann jedoch eine Herausforderung sein, einen „universellen“ Ansatz zu finden, der für verschiedene Szenarien funktioniert. Dieser Artikel untersucht mehrere Methoden und geht auf die damit verbundenen Einschränkungen ein und stellt letztendlich eine umfassende Lösung vor.

Einschränkungen traditioneller Methoden

  • path = os.path.abspath(os. path.dirname(sys.argv[0])): Dieser Ansatz schlägt fehl, wenn das Skript von einem anderen Skript in einem anderen Verzeichnis über Methoden wie execfile ausgeführt wird.
  • path = os.path.abspath(os.path.dirname(__file__)): Diese Methode funktioniert möglicherweise nicht in Fällen, in denen das Attribut

    • Datei nicht vorhanden ist (z. B. , Py2exe-Ausführung)
    • Code wird im Leerlauf mit „execute()“ ausgeführt
    • Datei ist nicht definiert (z. B. Mac OS X v10.6)

Umfassende Lösung

Um den Pfad der aktuell ausgeführten Datei unabhängig vom Ausführungskontext zu erhalten, kann eine Kombination von Funktionen aus den Modulen inspect und os verwendet werden:

from inspect import getsourcefile
from os.path import abspath

path = abspath(getsourcefile(lambda:0))

Diese Lösung bietet einen konsistenten Ansatz, der den Quelldateipfad in verschiedenen Szenarien abruft, einschließlich:

  • Direkte Ausführung des Hauptskripts
  • Ausführung von einem anderen Skript
  • Ausführung innerhalb einer Funktion
  • Ausführung innerhalb eines Interpreters (z. B. IDLE)

Beispieltest

Unter Berücksichtigung der folgenden Verzeichnisstruktur:

C:.
|   a.py
\---subdir
        b.py

Und der Code in a.py:

#! /usr/bin/env python
import os, sys

print "a.py: os.getcwd()=", os.getcwd()
print

execfile("subdir/b.py")

Und der Code in subdir/b.py:

#! /usr/bin/env python
import os, sys

print "b.py: os.getcwd()=", os.getcwd()
print

Die Ausgabe von Python a.py ist :

a.py: os.getcwd()= C:\
b.py: os.getcwd()= C:\zzz

Dies zeigt, dass os.getcwd() das Arbeitsverzeichnis des Ausführungskontexts widerspiegelt, das vom Speicherort des ausgeführten Skripts abweichen kann. Im Gegensatz dazu liefert die vorgeschlagene Lösung (abspath(getsourcefile(lambda:0))) konsistent den Quelldateipfad des Skripts, unabhängig vom Ausführungskontext.

Das obige ist der detaillierte Inhalt vonWie können Sie den Pfad der Ausführungsdatei in Python zuverlässig bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn