Subprocess.check_output in Python
Das Modul subprocess
ist ein integraler Bestandteil von Python und verhilft zu einer parallelen Programmierung. Dieses Modul kann neue Prozesse hervorbringen und mit Programmen arbeiten, die über das Befehlszeilentool gesteuert werden.
Es speichert verschiedene Funktionen, die uns helfen können, Befehle über ein Befehlszeilentool auszuführen. Eine solche Funktion ist die Funktion subprocess.check_output()
in Python.
Dieses Tutorial demonstriert die Funktion subprocess.check_output()
in Python.
Verwendung von subprocess.check_output()
in Python
Diese Funktion wurde mit Python 2.7 eingeführt. Wir können es verwenden, um einen Befehl in der Eingabeaufforderung mit Argumenten in Python auszuführen.
Die Funktion subprocess.check_output()
gibt die Ausgabe des angegebenen Befehls als Bytes zurück. Ein CalledProcessError
-Objekt wird ausgelöst, wenn die Funktion einen Nicht-Null-Code zurückgibt.
Ein CalledProcessError
-Objekt hat zwei Attribute. Dies sind die Attribute returncode
und output
.
Ein einfaches Beispiel dieser Funktion ist unten dargestellt.
import subprocess
print(subprocess.check_output(["echo", "Sample Message"], shell=False))
Ausgabe:
b'Sample Message\n'
Wir führen den Befehl echo
im obigen Beispiel aus und zeigen eine Nachricht an. Die zurückgegebene Ausgabe ist ein Byte-String mit der erforderlichen Nachricht.
Dieser Funktion sind mehrere Argumente zugeordnet. Wie im Befehl zu sehen, können wir den Befehl mit seinen Argumenten in der Funktion bereitstellen.
Abgesehen davon haben wir auch die Argumente stdin
, stderr
, shell
und universal_newlines
.
Die ersten drei Argumente sind die standardmäßigen Eingabe-, Ausgabe- und Fehlerdatei-Handles. Wir können ihre Werte als PIPE
-Objekte spezifizieren.
Wie bereits erwähnt, erstellt das Modul subprocess
neue untergeordnete Prozesse. Die PIPE
-Konstanten senden oder empfangen Informationen vom übergeordneten Prozess.
Das Argument shell
kann entweder True
oder False
sein. Der Befehl wird durch die Shell ausgeführt, wenn er auf True
gesetzt ist.
Es wird jedoch nicht empfohlen, Befehle über die Shell über Python auszuführen. Dies kann ein ernsthaftes Sicherheitsrisiko beim Lesen von Eingaben aus nicht vertrauenswürdigen Quellen darstellen, die Sicherheitsbedrohungen wie Shell-Injection hervorrufen können.
Wenn das Argument shell
auf True
gesetzt ist, können wir die Funktion pipes.quotes()
verwenden, um Leerzeichen und Metazeichen der Shell innerhalb des übergebenen Strings zu maskieren.
Das Argument universal_newlines
wird auf True
gesetzt, dann werden die als Standardeingabe, Ausgabe und Fehler bereitgestellten Objekte im Textmodus geöffnet. In anderen Funktionen wurde dasselbe Argument mit einem Alias mit dem Namen des Arguments text
verwendet.
Python 3.5 hat eine neue Funktion namens subprocess.run()
eingeführt. Diese Funktion gewann an Popularität gegenüber der traditionellen subprocess.check_output()
-Methode zum Ausführen von Befehlen; es gibt ein CompletedProcess
-Objekt zurück.
Die Funktion subprocess.run()
nimmt auch viele Argumente entgegen, von denen die meisten in der Methode subprocess.check_output()
nicht verfügbar sind. Die meisten dieser Argumente werden über die Schnittstelle übergeben.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn