Die Aufgabe, Shell-Befehle programmgesteuert auszuführen und ihre Ausgabe als Zeichenfolge zu erfassen, kann mit Hilfe des Unterprozessmoduls von Python erledigt werden.
Für den einfachsten Ansatz in offiziell gepflegten Python-Versionen verwenden Sie die Funktion check_output:
import subprocess output = subprocess.check_output(['ls', '-l']) print(output) # Output: b'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
In Python 3.5 , Die Run-Funktion bietet einen flexibleren und moderneren Ansatz:
import subprocess result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE) print(result.stdout.decode('utf-8')) # Output: 'total 0\n-rw-r--r-- 1 memyself staff 0 Mar 14 11:04 files\n'
Für erweiterte Kompatibilität und erweiterte Funktionalität verwenden Sie den Low-Level-Popen-Konstruktor. Mit kommunizieren können Sie Ausgaben erfassen und Eingaben übergeben:
import subprocess p = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE) output, _ = p.communicate() print(output) # Output: b'.\n..\nfoo\n'
Shell-Befehlsausführung (Shell=True Argument)
Standardmäßig , die Funktionen führen einzelne Programme aus. Um komplexe Shell-Befehle auszuführen, setzen Sie „shell=True“. Dies wirft jedoch Sicherheitsbedenken auf.
Eingabeverarbeitung
Um Eingaben über stdin zu übergeben, geben Sie das Eingabeschlüsselwortargument in run oder Popen an.
Fehlerbehandlung
Für eine ordnungsgemäße Fehlerbehandlung verwenden Sie check_output mit stdout=subprocess.STDOUT oder Popen mit stderr=subprocess.STDOUT. Alternativ überprüfen Sie den Rückgabecode des Unterprozesses.
Das obige ist der detaillierte Inhalt vonWie kann ich Shell-Befehle ausführen und deren Ausgabe in Python erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!