Subprocess.check_output in Python

Manav Narula 21 Juni 2023
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 Narula avatar Manav Narula avatar

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

Verwandter Artikel - Python Subprocess