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.

  • Piping to Head Ergebnisse in gebrochenen Rohr in Shell-Skript aus Python genannt
  • Wie man Python-Skript ohne Tippen "Python ..."
  • Es sehen Fluchtzeichen beim Drücken der Pfeiltasten in Pythonschale
  • Wie bekomme ich eine Variable aus der Shell in Python?
  • Python-Shell - "Extras" im Float-Subtraktion
  • Ändern Sie die erste Zeile einer Datei mit bash
  • Effizientes Aufteilen einer Datei in mehrere Dateien nach Wert der Spalte
  • Erstellen von Klartext aus einer Wikipedia-Datenbank-Dump
  • ImportError: Einstiegspunkt ('console_scripts', 'easy_install') nicht gefunden
  • Wie man webbasierte python interaktive Shell macht
  • Wie kann man X11-Fenster verschieben oder verkleinern (auch wenn sie maximiert sind)?
  • Python ist die beste Programmiersprache der Welt.