[gelöst] getcwd() bei start über verknüpfung

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
use_opensue
User
Beiträge: 33
Registriert: Mittwoch 15. August 2007, 10:43

Hallo,

je nachdem ob ich ein Skript per

Code: Alles auswählen

./skript.py
oder über eine Verknüpfung starte ändert sich die Ausgabe von getcwd().

Das Problem dabei ist, dass das Skript Dateien anlegt und diese sollen immer im Programmverzeichniss landen.

Unter Windows ist das auch der Fall, unter Linux hingegen landen die Dateien beim Skriptaufruf über die Verknüpfung immer im Homeverzeichniss..

Wie kann ich das abstellen? Wie finde ich heraus, in welchem Ordner sich das Skript befindet?

Einfach einen Pfad fest vorgeben will ich nicht, da ich nicht sicherstellen
kann(will), das jeder, dem ich das Skript gebe es auch an diese Stelle kopiert.
Zuletzt geändert von use_opensue am Mittwoch 12. März 2008, 15:36, insgesamt 1-mal geändert.
http://kontaktdb.berlios.de/
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

hiermit :)

Code: Alles auswählen

In [1]: print __file__
C:\Python25\lib\site-packages\IPython\FakeModule.pyc
In deinem Fall würde das heißen:

Code: Alles auswählen

import os
cwd = os.path.dirname(__file__)
use_opensue
User
Beiträge: 33
Registriert: Mittwoch 15. August 2007, 10:43

Danke!

Nur noch eins:

Code: Alles auswählen

print "cwd ", os.getcwd()
print "real cwd ", os.path.dirname(__file__)
Warum wird beim 2. print Befehl nichts ausgegeben, wenn ich das Skript mittels

Code: Alles auswählen

./skript.py
starte?
http://kontaktdb.berlios.de/
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Wird da wirklich nichts ausgegeben? *mitzaunpfahlwink*
Sonst probiere mal

Code: Alles auswählen

print "real abs cwd", os.path.abspath(__file__)
Gruß,
Christian
use_opensue
User
Beiträge: 33
Registriert: Mittwoch 15. August 2007, 10:43

Oh je, :evil:

mit dem richtigen Kode-lesen habe ich heute wohl so meine Probleme.
Wird da wirklich nichts ausgegeben? *mitzaunpfahlwink*
Ich habs, brauch abspath nicht testen...

Danke

use_opensu(s)e
(im Erdloch versinkt)
http://kontaktdb.berlios.de/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Alternative, statt __file__ -> sys.argv[0] nehmen

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten