Hallo,
ich bin der Neue ^^.
Also ich hab ein kleines Problem, seit ca. 1 1/2 Stunden google ich und finde nichts...
In einem meiner Programme starte ich eine batch-datei, welche ja die cmd aktiviert. Das Programm soll aber erst weiterarbeiten, wenn die cmd sich wieder geschlossen hat, da diese nicht immer gleich lang geöffnet ist kann ich keinen festen wert angeben und mit sleep() oder ähnlichem warten.
Ich dachte mir einfach in einer while-schleife zu überprüfen ob der Prozess 'cmd.exe' noch aktiv ist und erst wenn er es nicht mehr ist, aus der Schleife zu springen und weiter zu machen.
Ich hoffe mir kann wer dabei helfen,
schön wärs natürlich, wenn das ganze nicht allzuaufwendig (sprich 10 Zeiler oder noch mehr) ist. Da ich aber davon keine Ahnung habe, weis ich natürlich auch nicht wie kurz es geht ^^.
Danke schonmal
Sunjy
prüfen ob ein prozess aktiv ist
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
Suchst du "subprocess.call"?
hth, Jörgcall( *popenargs, **kwargs)
Run command with arguments. Wait for command to complete, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
ähm sorry, ich bin zwar eigentlich kein Anfänger in Python aber damit kenn ich mich auch nicht aus. ich wüsste jetzt spontan nicht was ich da als Parameter übergeben müsste um zu erfahren ob cmd.exe läuft.
Sorry :/
Sorry :/
Wenn die cmd.exe von einem Pythonskript aus gestartet wird, dann sollte dies so geschehen:
Code: Alles auswählen
import subprocess
subprocess.call(['cmd.exe'])
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
python-Programm:
(Beispiel-) Batch-Datei
hth, Jörg
edit: Komma vergessen
Code: Alles auswählen
import subprocess
#starte Externes Programme und WARTE bis es fertig ist
return_code = subprocess.call(["test.bat", "10", "Hallo welt!"])
# FALLS du .bat bzw. .cmd Dateien so nicht starten kannst, geht es so
#return_code = subprocess.call(["cmd.exe", "test.bat", "10", "Hallo welt!"])
if return_code == 0:
print "batch run successfully"
Code: Alles auswählen
rem Test.bat
@echo off
sleep %1
echo %2
edit: Komma vergessen
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
Dass der Prozess noch lebt, merkst du daran, dass Python bei `subprocess.call()` solange blockiert bis der Prozess beendet ist. Was die zu übergebenden Parameter angeht, könnte ein Blick in die Doku zu [mod]subprocess[/mod] weiterhelfen.Sunjy hat geschrieben:ich wüsste jetzt spontan nicht was ich da als Parameter übergeben müsste um zu erfahren ob cmd.exe läuft.
Hi,
also ich hab jetzt mal einfach
subprocess.call(['D:/a.bat'])
benutzt, das funktioniert eigentlich genau so wie ich es möchte. Die Datei wird gestartet und sobald sie fertig ist, geht es weiter im Hauptprogramm.
Aber nach sowas würd ich mich glaub totgooglen.
Danke =)
also ich hab jetzt mal einfach
subprocess.call(['D:/a.bat'])
benutzt, das funktioniert eigentlich genau so wie ich es möchte. Die Datei wird gestartet und sobald sie fertig ist, geht es weiter im Hauptprogramm.
Aber nach sowas würd ich mich glaub totgooglen.
Danke =)
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.
Ok, den Absatz hätte ich in der Doku dann weiterlesen sollensnafu hat geschrieben:Warum nicht direkt `subprocess.check_call()`?b.esser-wisser hat geschrieben:python-Programm:
"check_call" ist in den meisten Fallen besser, klar.
Deshalb ist am ende des offiziellen Tutorials (auf deiner Festplatte) die "Brief Tour of the Standard Library"Sunjy hat geschrieben:Aber nach sowas würd ich mich glaub totgooglen.
oups, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!