Problem mit spawnl unter Windows

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
Tobias Schenk
User
Beiträge: 7
Registriert: Montag 12. Juli 2004, 13:35

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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)
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!
Tobias Schenk
User
Beiträge: 7
Registriert: Montag 12. Juli 2004, 13:35

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
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Tobias Schenk
User
Beiträge: 7
Registriert: Montag 12. Juli 2004, 13:35

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.
Zuletzt geändert von jens am Donnerstag 2. Dezember 2004, 13:43, insgesamt 2-mal geändert.
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

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
Tobias Schenk
User
Beiträge: 7
Registriert: Montag 12. Juli 2004, 13:35

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Tobias Schenk hat geschrieben:Das mit Notepad speziell war nur ein einfacher Test von mir, mehr nicht.
Und haben wir bestanden??? :lol:
Tobias Schenk
User
Beiträge: 7
Registriert: Montag 12. Juli 2004, 13:35

Also es war ja mehr ein Test für mich, um das zu vereinfachen, aber ihr habt euch tapfer geschlagen!

GLÜCKWUNSCH! ;-)
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
Antworten