Programmpfade ermitteln

So bekommst du den kompletten Pfad zum gestarteten Modul:

os.path.abspath(sys.argv[0])

Ordner des gestarteten Moduls:

os.path.dirname(os.path.abspath(sys.argv[0]))

Dateiname des gestarteten Moduls:

os.path.basename(sys.argv[0])

Aktueller Ordner:

os.path.abspath(os.curdir)

Kompletter Pfad zur "aktuellen" Datei:

os.path.abspath(__file__)

Ordner der "aktuellen" Datei:

os.path.dirname(os.path.abspath(__file__))

Dateiname der "aktuellen" Datei:

os.path.basename(__file__)

Vorsicht! __file__ oder sys.argv[0] geben (abhängig vom Betriebssystem und vom aktuellen Ordner oder der Art des Programmaufrufs) nicht immer den kompletten Pfad zur Datei zurück. Deshalb muss vorher mit os.path.abspath() für gleiche Bedingungen gesorgt werden.

Wenn man das Programm mit cx_freeze oder py2exe gepackt hat, dann gibt es die einzelnen Dateien/Module nicht mehr. Dann kann man den Pfad zum aktuellen Modul auch nicht mehr mit __file__ ermitteln. Statt dessen muss man mit sys.argv[0] den Pfad zur Startdatei ermitteln.