Seite 1 von 1

Problem mit spawnl unter Windows

Verfasst: Donnerstag 2. Dezember 2004, 12:56
von Tobias Schenk
Hallo zusammen!

Würde mich freuen, wenn mir da jmd. kurz helfen könnte, ich krieg's einfach nicht gebacken:

Code: Alles auswählen

os.spawnl(os.P_WAIT, r'c:\windows\notepad.exe',r'c:\windows\notepad.exe')
os.spawnl(os.P_WAIT,  'c:\\windows\\notepad.exe','c:\\windows\\notepad.exe')
Beides klappt nicht und bringt mir die Fehlermeldung "Errno 2: No such file or directory"!

Was mach ich da falsche??

Danke, Grüße,

Tobias

Verfasst: Donnerstag 2. Dezember 2004, 13:02
von jens
Also bei klappt es!

Hier mal meine Variante:

Code: Alles auswählen

import os
SystemRoot = os.path.expandvars( "${SystemRoot}" )
Notepad = os.path.join(SystemRoot,"notepad.exe")
print "Pfad:",Notepad
os.spawnl(os.P_WAIT, Notepad, Notepad)

Verfasst: Donnerstag 2. Dezember 2004, 13:06
von Gast
Supi, danke, hab n seeehr doofen Fehler bemerkt! Der Name des Windows-Verzeichnisses ist hier bei der Arbeit nicht Windows, sogar WINNT! LOL

...Dämlich!

doch noch ne Frage!

Verfasst: Donnerstag 2. Dezember 2004, 13:14
von Tobias Schenk
Ich würde gerne (um etwas zu Testen) ein Python-Skript aus Python heraus ausführen.

Ich dachte, daß geht vielleicht irgendwie so:

Code: Alles auswählen

fABAIn1 = "..\Premorph\Premorph.py"
os.spawnv(os.P_WAIT, r'c:/python23/python.exe',[fABAIn1])
geht aber nicht, wie auch andere Methoden, die ich versucht habe.

Warum muss man denn eigentlich immer unbedingt den gesamten Pfad angeben? Im Command unter Windows kann ich ja auch einfach "python.exe" aufrufen, da das Verzeichnis in der Variable "Path" definiert ist.

Danke, Gruß,

Tobias

Verfasst: Donnerstag 2. Dezember 2004, 13:27
von mawe
Hi!

Es geht sicher auch einfacher, aber so könntest Du es machen:

Code: Alles auswählen

import sys
import os

path = os.path.abspath(os.path.dirname(sys.argv[0]))  # hier bist Du
otherpath = '..\was\auch\immer'
Gruß, mawe

Verfasst: Donnerstag 2. Dezember 2004, 13:37
von Tobias Schenk
Hi, danke für Deine Hilfe!

Aber MUSS man jetzt immer den absoluten Pfad angeben, wenn man ein Programm aufrufen will?

Also, geht auch: "Notepad.exe" oder nur: "C:\Winnt\notepad.exe"?

Gruß, Tobias

Verfasst: Donnerstag 2. Dezember 2004, 13:41
von jens
Zumindest mit os.spawnl() kommt ein fehler, wenn nur "notepad.exe" gestartet wird:

OSError: [Errno 2] No such file or directory


Mit einem anderen Befehl sollte es aber gehen!

EDIT:
z.B.

Code: Alles auswählen

os.system("notepad.exe")
Unschön ist nur, das ein DOS-Fenster aufbleibt... Kann man aber so ändern:

Code: Alles auswählen

os.system("start notepad.exe")
Dann flackert nur kurz ein DOS-Fenster auf, schließ sich aber direkt.

Verfasst: Donnerstag 2. Dezember 2004, 13:41
von mawe
Hi!

Frag mich keine Windows-Sachen :D
Wie rufst Du Notepad denn normalerweise auf (die Frage ist ernst gemeint, hab schon lang kein W. mehr benutzt.)? Ich würde sagen genau so musst Du es dann auch aus deinem Script heraus aufrufen.

Gruß, mawe

Verfasst: Donnerstag 2. Dezember 2004, 13:54
von Tobias Schenk
Hi zusammen!

Danke für die Tips, hat mir gut geholfen! Das mit Notepad speziell war nur ein einfacher Test von mir, mehr nicht. SOO oft brauch ich Notepad dann doch nicht! ;-)

Danke!!

Tobias

Verfasst: Donnerstag 2. Dezember 2004, 14:02
von jens
Tobias Schenk hat geschrieben:Das mit Notepad speziell war nur ein einfacher Test von mir, mehr nicht.
Und haben wir bestanden??? :lol:

Verfasst: Donnerstag 2. Dezember 2004, 14:05
von Tobias Schenk
Also es war ja mehr ein Test für mich, um das zu vereinfachen, aber ihr habt euch tapfer geschlagen!

GLÜCKWUNSCH! ;-)

Danke

Verfasst: Montag 22. August 2005, 20:46
von Hopser008
Hallo,
Euer Artikel hat mir sehr geholfen, ich habe es geschafft, aus der WIN-Registry die komplette Kommandozeile zum Öffnen bzw. Drucken einer Datei auszulesen, aber dann wie weiter??
os. system("Start ...) half da wunderbar weiter,
Danke
Lutz