Seite 1 von 1
Shell-Skripte ausführen, als würden sie manuell gestartet
Verfasst: Mittwoch 5. März 2008, 11:14
von Tekl
Hi,
Wenn ich ein Shell-Skript aus Python aufrufen, bekomme ich folgende Fehlermeldung:
seek() on closed filehandle ARGV at /Developer/Extras/Dictionary Development Kit/bin/make_line.pl line 55, <> chunk 44318.
Ich verwende dabei den Befehl
subprocess.call(), aber auch mit den anderen Varianten wie
os.popen (Zusätzlich mit Broken-pipe-Fehlern) oder
os.system klappt es nicht.
Ich arbeite unter OS X 10.5.2
Tekl
Verfasst: Mittwoch 5. März 2008, 12:19
von Tekl
Evtl. ist wichtig zu erwähnen, dass ich das Skript mit Befehl+R direkt aus Textmate starte. Wenn ich das Skript per Doppelklick starte ist das Arbeitsverzeichnis mein Benutzerordner und nicht das Verzeichnis wo das Skript liegt.
Wie komme ich denn daran?
Verfasst: Mittwoch 5. März 2008, 12:25
von Tekl
Ich habe mir die letzte Frage bereits selber beantworten können.
Mit
Code: Alles auswählen
os.chdir( os.sep.join(sys.argv[0].split(os.sep)[:-1]) )
wird auch beim Doppelklick ein Skript in dem Verzeichnis ausgeführt, wo es liegt. Vermutlich gibt's aber auch eine einfachere Lösung, denn besonders elegant, lesbar und vor allem merkbar ist das nicht gerade.
Ich dachte, wenn ich das Skript per Doppelklick starte, kommt keine Fehlermeldung. Leider doch.
Meine ursprüngliche Frage ist also noch nicht geklärt.
Verfasst: Mittwoch 5. März 2008, 12:44
von jens
Verfasst: Mittwoch 5. März 2008, 13:03
von Tekl
Naja, nicht viel besser. Gibt's dafür keine Befehle wie in PHP?
Verfasst: Mittwoch 5. März 2008, 13:56
von HWK
jens hat geschrieben:Wie wäre es damit:
entspricht
MfG
HWK
Verfasst: Mittwoch 5. März 2008, 13:58
von jens
Ahja, stimmt... Im os.path modul sind doch immer wieder einige nette Dinge zu finden
Verfasst: Mittwoch 5. März 2008, 18:06
von BlackJack
An den Dateinamen eines Moduls kommt man auch über das `__file__`-Attribut des Moduls heran.