Ich versuche, einen Code-Making-Code mit Python-Subprozess zu erstellen.Ich möchte überprüfen, ob der Subprozess von Python erfolgreich war oder ob ein Fehler aufgetreten ist
#code = 'print("hey")' #OK
code = 'print"hey")' #SyntaxError
with open(filename, 'w') as f:
f.write(code)
proc = s.Popen(['python',filename], stdout=s.PIPE, stderr=s.STDOUT)
stdout_v, stderr_v = proc.communicate('')
print(stdout_v.decode('utf8'))
Es ist ungefähr so.
Derzeit ist der Rückgabewert aus dem Subprozess in stdout_v enthalten, auch wenn er normal arbeitet oder wenn ein Syntaxfehler auftritt, und er kann sie nicht unterscheiden.
Kann ich die Ausgabe erhalten, wenn sie normal ausgeführt wird und eine Fehlermeldung vom Unterprozess erhalten kann, wenn ein Fehler auftritt?
Können Sie Python 3.5+ verwenden? –
Überprüfen Sie 'proc.returncode'. –
BTW - verwenden Sie nicht die "Snippet" -Schaltfläche mit Ausnahme von HTML/JavaScript, die in einem Browser ausgeführt werden kann. Die Taste '{}' sollte verwendet werden, um andere Sprachen zu codieren. –