Ich habe das schon vor einer Weile gelesen, aber ich finde es nicht. Ich versuche einen Befehl zu finden, der Befehle im Terminal ausführt und dann das Ergebnis ausgibt.
Zum Beispiel: Das Skript wird sein:
command 'ls -l'
Das Ergebnis der Ausführung dieses Befehls im Terminal wird ausgegeben
Dafür gibt es mehrere Möglichkeiten:
Ein einfacher Weg ist die Verwendung des os-Moduls:
import os
os.system("ls -l")
Komplexere Dinge können mit dem Subprozess-Modul erreicht werden.
import subprocess
test = subprocess.Popen(["ping","-W","2","-c", "1", "192.168.1.70"], stdout=subprocess.PIPE)
output = test.communicate()[0]
Ich bevorzuge die Verwendung eines Teilprozessmoduls:
from subprocess import call
call(["ls", "-l"])
Grund ist, dass wenn Sie eine Variable im Skript übergeben möchten, dies eine sehr einfache Möglichkeit bietet, beispielsweise den folgenden Teil des Codes zu nehmen
abc = a.c
call(["vim", abc])
In der Tat wird jede Frage zu einem Teilprozess eine gute Lektüre sein
Sie sollten auch in den Kommandos.getstatusoutput nachsehen
Dies gibt einen Tupel der Länge 2 ...__ zurück. Die erste ist die Rückgabeganz (0 - wenn die Befehle erfolgreich sind) Die zweite Ausgabe ist die gesamte Ausgabe, wie im Terminal angezeigt.
Für ls
import commands
s=commands.getstatusoutput('ls')
print s
>> (0, 'file_1\nfile_2\nfile_3')
s[1].split("\n")
>> ['file_1', 'file_2', 'file_3']
Das os.popen () ist ziemlich einfach zu verwenden, aber seit Python 2.6 ..__ ist es veraltet. Sie sollten stattdessen das subprocess -Modul verwenden.
Lesen Sie hier: Ein os.popen (Befehl) in einen String einlesen
import os
os.system("echo 'hello world'")
Das sollte funktionieren. Ich weiß nicht, wie ich die Ausgabe in die Python-Shell drucken soll.
Sie können das 'os'-Modul importieren und wie folgt verwenden:
import os
os.system('#DesiredAction')