Wie erhalte ich den Pfad und den Namen der Datei, die gerade ausgeführt wird?

Ich habe Skripte, die andere Skriptdateien aufrufen, aber ich muss den Dateipfad der Datei abrufen, die gerade im Prozess ausgeführt wird.

Sagen wir zum Beispiel, ich habe drei Dateien. Mit execfile:

  • script_1.py ruft script_2.py auf.
  • script_2.py ruft wiederum script_3.py auf.

Wie kann ich den Dateinamen und den Pfad von script_3.py, vom Code in script_3.py, erhalten, ohne diese Informationen als Argumente von script_2.py übergeben zu müssen?

(Das Ausführen von os.getcwd() gibt den ursprünglichen Dateipfad des Startskripts zurück, nicht den der aktuellen Datei).

Es ist nicht ganz klar, was Sie mit "dem Dateipfad der Datei, die gerade innerhalb des Prozesses läuft" meinen. sys.argv[0]` enthält normalerweise den Ort des Skripts, das vom Python-Interpreter aufgerufen wurde. Lesen Sie die sys-Dokumentation für weitere Details.

Wie @Tim und @Pat Notz dargelegt haben, bietet das Attribut __file__ Zugriff auf

die Datei, aus der das Modul geladen wurde geladen wurde, wenn es aus einer Datei geladen wurde

Kommentare (1)

Das Attribut __file__ funktioniert sowohl für die Datei, die den Hauptausführungscode enthält, als auch für importierte Module.

Siehe

Kommentare (0)

Ich glaube, es ist nur __file__. Vielleicht möchten Sie auch das inspect module ausprobieren.

Kommentare (1)