web-dev-qa-db-de.com

Python Script führt Befehle in Terminal aus

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

66
Ali

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]
122
Uku Loskit

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])
16
Kevin Pandya
5
pyfunc

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']
2
minocha

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

1
Paolo Rovelli
import os
os.system("echo 'hello world'")

Das sollte funktionieren. Ich weiß nicht, wie ich die Ausgabe in die Python-Shell drucken soll. 

1
Mr_pzling_Pie

Sie können das 'os'-Modul importieren und wie folgt verwenden: 

import os
os.system('#DesiredAction')
0
Kobe Keirouz