So führen Sie einen externen Befehl oder Programm in Python aus

So führen Sie einen externen Befehl oder Programm in Python aus

Die Python Subprozess Das Modul ermöglicht es, neue Prozesse zu erzeugen und externe Befehle oder Skripte aus den Python -Skripten auszuführen. Sie können die neueste Version von Python mit diesen Tutorials installieren. Außerdem gibt es eine Reihe von IDE für Python. Wie die Pycharm Python IDE auf Ubuntu -Systemen installieren.

Python Script to Call System -Befehl

Erstellen wir Ihr erstes Programm, um alle im aktuellen Verzeichnis verfügbaren Dateien aufzulisten. Sie können eine beliebige Anzahl von Befehlszeilenparametern mit dem getrennten COMM (,) hinzufügen.

#!/usr/bin/python3 subprozess subprozess importieren.Rufen Sie an (["ls", "-l"])
1234#!/usr/bin/python3 import subprocesssubprocess.Rufen Sie an (["ls", "-l"])

Wo-

  • Die Importanweisung wird verwendet, um das Subprozess -Modulformular in der Python Standard Library zu laden
  • Aufruf ist die Funktion des Subprozessmoduls, die zur Ausführung externer Befehle verwendet wird

Python -Druck ohne neue Linie

Python -Befehle enden mit der neuen Zeilenausgabe „\ n“, die Sie mit End = “überschreiben können, dass der nächste Befehlsausgang in derselben Zeile liegt. Siehe das folgende Beispiel.

#!/usr/bin/python3 import subprocess print ("\ ntoday is",) subprocess.Rufen Sie an (["Datum", "+%d"])
123456#!/usr/bin/python3 import subprocess print ("\ ntoday is", end = "") subprocess.Rufen Sie an (["Datum", "+%d"])

Ergebnis:

Heute ist der 01.11.18 

Python -Beispiel mit Shellerweiterung

Der Standard -Subprozess.Call erweitert Shell Wildcards nicht oder führt die Befehlssubstitution durch. Dies kann überschrieben werden, indem der tatsächliche Wert für das Argument von Shell übergeben wird. Denken Sie daran, dass die Verwendung von Shell = True ein Sicherheitsproblem für Ihr System sein könnte, indem der schädliche Befehl ausgeführt wird.

#!/usr/bin/python3 subprocess # ausführungsbefehl ohne Shell -Erweiterungs -Subprozess ausführen.Anruf (['Echo', 'Willkommen $ user']) # Ausführen eines Befehls mit Shell -Erweiterungs -Subprozess ausführen.Rufen Sie an ('Echo Willkommen $ user', Shell = true)
123456789#!/usr/bin/python3 subprocess # ausführungsbefehl ohne Shell -Expansionsubprozess ausführen.Anruf (['echo', 'Willkommen $ user']) # Ausführen eines Befehls mit Shell Expansionsubprocess ausführen.Rufen Sie an ('Echo Willkommen $ user', Shell = true)

Ergebnis:

Willkommen $ user Willkommens Root 

Sie können in der obigen Ausgabe sehen, dass der erste Befehl einen variablen Namen druckt, da er ohne Shellerweiterung ausgeführt wurde. Der zweite mit der Shellerweiterung ausgeführte Befehl erhalten den Wert der Benutzerumgebungsvariablen. Außerdem können Sie sehen, dass der gesamte Befehl jetzt als Zeichenfolge und nicht als Liste von Strings übergeben wird.

Andere nützliche Python -Beispiele

Sie können Ihre Skripte lesbarer Format und schöner machen, indem Sie einen langen Befehl in einer Variablen speichern und es dann ausführen.

#!/usr/bin/python3 import subprozess cmd = "grep -re 'fatal'/var/log/> suchvorgänge.TXT "Subprozess.Anruf (CMD, Shell = True)
123456#!/usr/bin/python3 import subprozess cmd = "grep -re 'fatal'/var/log/> suchvorgänge.TXT "Subprozess.Anruf (CMD, Shell = True)

Sie können die Ausgabe eines beliebigen Befehls auch mit Subprozess in eine Variable speichern.GetOutput. Dies speichert auch, wenn eine Fehlermeldung generiert wird.

#!/usr/bin/python3 import subprocess print ("Die Ausgabe von 'PWD' ist:", Flush = true) output = subprocess.GetOutput ('PWD') Print (Ausgabe)
12345678#!/usr/bin/python3 import subprocess print ("Die Ausgabe von 'PWD' ist:", Flush = true) output = subprocess.GetOutput ('PWD') Print (Ausgabe)

Ergebnis:

Die Ausgabe des Befehls 'PWD' ist:/root/python/scripts