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
Freigeben: 2024-10-25 09:14:29
Original
986 Leute haben es durchsucht

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))
Nach dem Login kopieren

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
Nach dem Login kopieren

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")
Nach dem Login kopieren

Und der Code in subdir/b.py:

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

print "b.py: os.getcwd()=", os.getcwd()
print
Nach dem Login kopieren

Die Ausgabe von Python a.py ist :

a.py: os.getcwd()= C:\
b.py: os.getcwd()= C:\zzz
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage