Wie bestimme ich das aktuelle Skriptverzeichnis richtig?
Ich möchte sehen, wie das aktuelle Skriptverzeichnis in Python am besten ermittelt werden kann.
Ich habe festgestellt, dass es aufgrund der vielen Möglichkeiten, Python-Code aufzurufen, schwierig ist, eine gute Lösung zu finden.
Hier sind einige Probleme:
__file__
ist nicht definiert, wenn das Skript mit @ ausgeführt wiexec
, execfile
__module__
ist nur in Modulen definiertAnwendungsfälle
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(aus einem anderen Skript, das sich in einem anderen Verzeichnis befinden und ein anderes aktuelles Verzeichnis haben kann.Ich weiß, dass es keine perfekte Lösung gibt, aber ich suche nach dem besten Ansatz, der die meisten Fälle löst.
Der am häufigsten verwendete Ansatz istos.path.dirname(os.path.abspath(__file__))
aber das funktioniert wirklich nicht, wenn Sie das Skript von einem anderen mit @ ausführexec()
.
Jede Lösung, die das aktuelle Verzeichnis verwendet, schlägt fehl. Dies kann je nach Aufruf des Skripts unterschiedlich sein oder innerhalb des ausgeführten Skripts geändert werden.