Wie kann man das Ergebnis eines ausgeführten Shell-Befehls in einer Variable in Python speichern?

Ich muss das Ergebnis eines Shell-Befehls speichern, den ich in einer Variablen ausgeführt habe. Aber das konnte ich nicht bekommen. Ich habe versucht wie:

call=os.system("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'") print call 

Aber es druckt das Ergebnis im Terminal und druckt den Wert des Anrufs als Null, was möglicherweise als Erfolg anzeigt. Wie bekomme ich das Ergebnis in einer Variable gespeichert?

3 Solutions collect form web for “Wie kann man das Ergebnis eines ausgeführten Shell-Befehls in einer Variable in Python speichern?”

Verwenden Sie stattdessen das subprocess :

 import subprocess output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True) 

Bearbeiten: Das ist neu in Python 2.7. In früheren Versionen sollte dies funktionieren (mit dem Befehl umgeschrieben wie unten gezeigt):

 import subprocess output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0] 

Als Nebennote kannst du umschreiben

 cat syscall_list.txt | grep f89e7000 

Nach

 grep f89e7000 syscall_list.txt 

Und Sie können sogar die gesamte Aussage mit einem einzigen awk Skript ersetzen:

 awk '/f89e7000/ {print $2}' syscall_list.txt 

Führen zu:

 import subprocess output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt']) 

Commands.getstatusoutput würde für diese Situation gut funktionieren.

 import commands print(commands.getstatusoutput("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'")) 

Alle anderen Antworten hier sind gute Antworten. In vielen Situationen müssen Sie externe Befehle ausführen.

Dieses spezifische Beispiel hat eine andere Möglichkeit: Sie können die Datei lesen, es Zeile für Zeile verarbeiten und etwas mit der Ausgabe machen.

Während diese Antwort nicht für die "allgemeinere Frage gefragt" funktioniert, denke ich, dass es immer in Betracht gezogen werden sollte. Es ist nicht immer die "richtige Antwort", auch wenn möglich. Denken Sie daran (einfacher), und wissen, wann (nicht), um es anzuwenden (schwieriger), wird Ihnen ein besserer Programmierer.

  • Lesen Sie die Eingabe von umgeleiteten Stdin mit Python
  • Umgeben von Umgebungsvariablen vom bash-Skript zur aktuellen Session von Python
  • Ist es möglich, das vorherige Verzeichnis python anzugeben?
  • Kann ich Python als Bash-Ersatz verwenden?
  • Linux - watch-Befehl zeigt keine Farben über ssh
  • Wie bekomme ich eine Variable aus der Shell in Python?
  • Was ist der Subprocess.Popen max Länge des Args-Parameters?
  • Aufruf einer Python-Funktion aus einem Shell-Skript
  • Wie kann ich ein Python-Skript auf vielen Dateien ausführen, um viele Ausgabedateien zu erhalten?
  • Python-Paketverwaltung unter Mac OS X
  • Parallelverarbeitung von einer Befehlswarteschlange auf Linux (bash, python, ruby ​​... was auch immer)
  • Python ist die beste Programmiersprache der Welt.