Das Unterprozessmodul erlaubt es Ihnen, neue Prozesse zu starten, Eingaben an diese Prozesse weiterzuleiten und deren Ausgaben und Fehlermeldungen abzugreifen.
Hier sind einige Beispiele, wie man das Unterprozessmodul in Python verwendet:
Beispiel 1: Einfaches Kommando
```python
import subprocess
subprocess.run([“ls”, “-l”])
```
In diesem Fall wird das Kommando `ls -l` ausgeführt, ähnlich wie wenn es in der Kommandozeile eingegeben wurde.
Beispiel 2: Kommando mit Piping
```python
import subprocess
result = subprocess.run([“ls”, “-l”], stdout=subprocess.PIPE)
print(result.stdout.decode())
```
Hier wird die Ausgabe (`stdout`) des Kommandos `ls -l` in den Speicher (in einer Pipe) gespeichert, sodass sie vom Programm weiter verwendet werden kann. Mit `result.stdout.decode()` wird die Ausgabe dann als String angezeigt.
Beispiel 3: Kommando mit Fehlerbehandlung
```python
import subprocess
try:
result = subprocess.run([“ls”, “-l”, “non_existent_file”], stderr=subprocess.PIPE, check=True)
except subprocess.CalledProcessError as e:
print(e.stderr.decode())
```
In diesem Fall wird ein Fehler erzeugt, wenn das Kommando scheitert (in diesem Fall, weil die Datei `non_existent_file`, die wir auflisten wollen, nicht existiert). Der Parameter `check=True` sorgt dafür, dass eine `CalledProcessError`-Ausnahme ausgelöst wird, wenn das Kommando scheitert. Mit `stderr=subprocess.PIPE` und `e.stderr.decode()` wird gezeigt, was der Fehler war.
In allen Fällen sollten die Argumente für `subprocess.run()` immer als eine Liste von Strings eingegeben werden, wobei jede Zeichenkette ein einzelnes Argument darstellt.
Für kompliziertere Szenarien, in denen Sie mit dem Standardinput eines Programms interagieren müssen oder komplexe Pipe-Setups benötigen, können Sie die Funktionen `subprocess.Popen()`, `subprocess.communicate()`, `subprocess.stdin.write()`, `subprocess.stdout.read()`, etc. nutzen.