Seite 1 von 1

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

Verfasst: Mittwoch 12. März 2008, 12:13
von use_opensue
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.

Verfasst: Mittwoch 12. März 2008, 12:27
von Zap
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__)

Verfasst: Mittwoch 12. März 2008, 13:20
von use_opensue
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?

Verfasst: Mittwoch 12. März 2008, 13:24
von CM
Wird da wirklich nichts ausgegeben? *mitzaunpfahlwink*
Sonst probiere mal

Code: Alles auswählen

print "real abs cwd", os.path.abspath(__file__)
Gruß,
Christian

Verfasst: Mittwoch 12. März 2008, 14:01
von use_opensue
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)

Verfasst: Mittwoch 12. März 2008, 14:14
von jens
Alternative, statt __file__ -> sys.argv[0] nehmen