Seite 1 von 1

Pfad ausgeben in dem man sich befindet

Verfasst: Montag 9. Oktober 2006, 11:53
von Mati
Hallo,

wenn ich ein skript starte kann ich über
os.path.abspath(".")
das verzeichnis ausgeben in dem das skript liegt...
wie kann ich denn das verzeichnis angeben aus dem ich das skript aufgerufen habe?

danke

Verfasst: Montag 9. Oktober 2006, 12:19
von jens

Verfasst: Dienstag 10. Oktober 2006, 06:51
von Nirven
os.path.abspath('.') liefert bei mir das gleiche wie os.getcwd(), beidemale der Pfad in aus dem ich das Script aufgerufen habe.

@Mati: Meintest du deine Frage eventuell andersrum, also womit du den Pfad bekommst, in dem das Script liegt?

Verfasst: Dienstag 10. Oktober 2006, 13:30
von Joghurt
Nirven hat geschrieben:@Mati: Meintest du deine Frage eventuell andersrum, also womit du den Pfad bekommst, in dem das Script liegt?
Den bekämst du übrigens mit

Code: Alles auswählen

import sys
import os.path
print os.path.dirname(sys.argv[0])

Verfasst: Mittwoch 11. Oktober 2006, 22:01
von Masaru

Code: Alles auswählen

__file__
gibt den Pfad zum aktuellen Modul an.

Verfasst: Mittwoch 11. Oktober 2006, 23:52
von Y0Gi
Ich habe sowas kürzlich auch versucht, weil ich einen relativen Import über sys.path.append() vorbereiten will, aber das Script von überall aufrufbar sein soll. Entsprechend lieferten aber getcwd() und Konsorten immer unterschiedliche Ergebnisse und __file__ war IIRC sogar leer. Naja, muss ich mir notgedrungen eh nochmal genauer ansehen.

Verfasst: Donnerstag 12. Oktober 2006, 21:50
von Masaru
Mein Fehler ...:
__file__
sys.arg[0]

fördern nicht den Ursprungspfad des "Aufrufers" zu Tage. Das ist wie schon erwähnt, mit os.getcwd() (halt das current working directory) "eigentlich" möglich.

Eventuell ... ich bin mir nicht sicher, habe es auch nicht bisher testen können ... erziehlt man aus Modulen, relativen Import-Ursprunges, nicht mit os.getcwd() mehr den Ursprungspfad des Skriptaufrufers, sondern wiederrum nur das Skript, oder was auch immer.

Vielleicht hilft dann ein Ermitteln im Aufrufskript und Weiterleiten in die andere Bereiche erst einmal weiter?