Wie führe ich einen Shell-Befehl in Python aus und fange die Ausgabe auf?

In Python kann man das subprocess Modul verwenden, um Shell-Befehle auszuführen und deren Ausgabe aufzufangen. Hier ist ein Beispiel dafür, wie man die Funktion subprocess.run() verwenden kann, um den Befehl 'ls' auszuführen und die Ausgabe aufzufangen:

import subprocess

result = subprocess.run(['ls','-l'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output = result.stdout.decode('utf-8')
print(output)

Man kann auch subprocess.check_output() verwenden, welches eine vereinfachte Version von run() ist, es gibt die Ausgabe als Bytes zurück und wirft eine CalledProcessError Ausnahme aus, wenn der Befehl einen nicht-null Exit-Status zurückgibt.

import subprocess

output = subprocess.check_output(['ls','-l'])
print(output.decode('utf-8'))

In beiden Fällen wird die Ausgabe in der Variablen output gespeichert, die man dann bearbeiten oder ausgeben kann wie gewünscht.