Ich möchte sehen, was ist der beste Weg, um das aktuelle Skript-Verzeichnis in Python zu bestimmen.
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 mitexec
,execfile
__module__
ist nur in Modulen definiert
Anwendungsfälle:
./myfile.py
python myfile.py
./somedir/myfile.py
python somedir/myfile.py
execfile('myfile.py')
(von einem anderen Skript, das sich in einem anderen Verzeichnis befinden kann und ein anderes aktuelles Verzeichnis haben kann.
Ich weiß, dass es keine perfekte Lösung gibt, aber ich bin auf der Suche nach dem besten Ansatz, der die meisten Fälle löst.
Der am häufigsten verwendete Ansatz ist os.path.dirname(os.path.abspath(__file__))
aber das funktioniert nicht, wenn Sie das Skript von einem anderen Skript aus ausführen mit exec()
.
Warnung
Jede Lösung, die das aktuelle Verzeichnis verwendet, wird fehlschlagen. Dieses kann je nach Art des Skriptaufrufs unterschiedlich sein oder innerhalb des laufenden Skripts geändert werden.