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.
Unschön ist nur, das ein DOS-Fenster aufbleibt... Kann man aber so ändern:
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
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???
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