Verzeichnis behalten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

hallo,

folgender code startet am anfang eines scriptes. aus dem libs ordner importiere ich verschiedene superklassen.

sys.path.append(os.getcwd())
sys.path.append(os.getcwd()+"\\libs\\")

im aktuellen verzeichnis gibt es einen image ordner mit verschiedenen Bildern. wenn ich bilder dann versuche zu laden (mit os.getcwd()+r"bildpfad") versucht er diese aus os.getcwd()+"\libs\"+bildpfad zu laden.

wo ist dabei das problem da der cwd normalerweise doch der pfad sein sollte der das gerade ausgeführte skript enthält.

mfg andi
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Andi hat geschrieben: wo ist dabei das problem da der cwd normalerweise doch der pfad sein sollte der das gerade ausgeführte skript enthält.

mfg andi
Nein. Dein CWD ist das aktuelle Arbeitsverzeichnis, das muß nichts mit dem Ort des Skriptes zu tun haben. Wenn deine Bilder relativ zum Skript liegen, mußt Du zuerst den genauen Ort deines Skriptes herausfinden. Oder Du adressierst die Bilder absolut, mit ganzem Pfad.

Zum Aneinanderhängen von Pfaden würde ich übrigens immer os.path.join nehmen!

Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Andi
User
Beiträge: 24
Registriert: Sonntag 27. Juli 2003, 14:23
Wohnort: Großkarolinenfeld

und wie bekomme ich das verzeichnis in dem sich das Skript befindet?
mfg

(der Anderl aus Bavaria der bei den Preißn war und jetzt wieda in bayern is)
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

Andi hat geschrieben:und wie bekomme ich das verzeichnis in dem sich das Skript befindet?
Zum Beispiel mit dieser Funktion (habe ich bisher nur unter Linux getestet):

Code: Alles auswählen

def home_path(resolve_links=0):
    p = sys.argv[0]
    if not os.path.isabs(p):
        p = os.path.normpath(os.path.join(os.getcwd(), p))
    if resolve_links:
        p = os.path.realpath(p)
    return os.path.split(p)[0]
Entweder das Skript wird schon mit absolutem Pfad gerufen, dann nehmen wir den. Oder wir müssen den relativen Pfad mit dem aktuellen Arbeitsverzeichnis (cwd) verknüpfen, um dorthin zu gelangen. Um sicherzugehen, sollte resolve_links allerdings auf 1 gesetzt werden, da sonst bei Softlinks die Auflösung eventuell fehlschlägt.

Viel Glück,
Jörg
"Sie sind nicht berechtigt, unrechtmäßige Kopien dieses Datenträgers zu erstellen." - Microsoft-Weisheit auf einer CD von MS-VisualC++-6.0
Antworten