Wie Sie feststellen Teilprozess.Popen() ist fehlgeschlagen, wenn die shell=True
Windows-version von Python 2.6.4: gibt es eine Möglichkeit, um festzustellen, ob Teilprozess.Popen() schlägt fehl, wenn mit shell=True?
Popen() erfolgreich ausfällt, wenn die shell=False
>>> import subprocess
>>> p = subprocess.Popen( 'Nonsense.application', shell=False )
Traceback (most recent call last):
File ">>> pyshell#258", line 1, in <module>
p = subprocess.Popen( 'Nonsense.application' )
File "C:\Python26\lib\subprocess.py", line 621, in __init__
errread, errwrite)
File "C:\Python26\lib\subprocess.py", line 830, in
_execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
Aber bei shell=True, es scheint keine Möglichkeit zu bestimmen, ob ein Popen () - Aufruf erfolgreich war oder nicht.
>>> p = subprocess.Popen( 'Nonsense.application', shell=True )
>>> p
>>> subprocess.Popen object at 0x0275FF90>>>
>>> p.pid
6620
>>> p.returncode
>>>
Ideen schätzen.
Grüße,
Malcolm
Du musst angemeldet sein, um einen Kommentar abzugeben.
returncode
funktioniert, es wird zwarNone
bis Sie angerufen habenp.poll()
.poll()
selbst wieder den Fehler-code, so können Sie nur tun,Im ersten Fall ist es nicht zu beginnen, in der zweiten - es " erfolgreich gestartet-shell, die wiederum fehlschlägt, um die Anwendung auszuführen. Damit Ihr Prozess wurde ordnungsgemäß erzeugt, beendet und wartet für Sie, sich zu erkundigen, über seinen exit-code. So, die Sache ist die, es sei denn, Ihr shell-oder Umgebungsvariablen (z.B. kein Speicher) ist völlig gebrochen, es gibt keine Möglichkeit
Popen
selbst kann fehlschlagen.So können Sie sicher
.poll()
und.wait()
bekommen alle die traurige Nachricht.