Wie erfassen Sie die Ausgabe von “subprocess.call", um eine Datei?
In meinem code habe ich eine Zeile wie diese:
rval = subprocess.call(["mkdir",directoryName], shell=True)
und ich kann überprüfen rval
zu sehen, wenn es 0
oder 1
, aber wenn es 1
würde ich gerne den text aus dem Befehl "A subdirectory or file ben already exists."
in einem Datei-format, damit ich es vergleichen kann, um zu einer anderen Datei, wenn ich will, um sicherzustellen, der text ist der gleiche.
Ist es möglich, eine Zeile wie diese, aber ich weiß, das funktioniert nicht
rval = subprocess.call(["mkdir",directoryName], shell=True) >> filename
also egal was passiert, mit dem Befehl, der text ist gefangen in filename
, und rval
hat immer noch den return-code?
- Duplizieren von all diesen: stackoverflow.com/search?q=%5Bpython%5D+subprocess+capture
- mögliche Duplikate von "Aufnehmen" Teilprozess output
- warum bist du nicht mit Python eingebaute
mkdir()
? - Ich mache dies für einen Befehl kann ich nicht hier posten, aber es hat ähnliche Eigenschaften wie mkdir.
- es ist fast ein Duplikat. Der Unterschied wäre
Popen
vscall
(die ich Stimme ist subtil), und der Wunsch zu schreiben in eine Datei, anstatt der Erfassung der Ausgabe im Programm. Obwohl es scheint, der Fragesteller würde eher erfassen Sie die Ausgabe, ist es sinnvoll, die Frage zu beantworten, wie Sie ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem subprocess-Modul hat eine eingebaute "check_output' - Funktion, dies zu tun:
Du sowieso verwenden müssen, versuchen Sie zu fangen, weil es wirft exception, wenn der Rückgabewert nicht null ist 🙂
except CalledProcessError as e: returncode=e.returncode
.