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 definiert

Anwendungsfälle

./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('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().

Warnun

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.

Antworten auf die Frage(26)

Ihre Antwort auf die Frage