So führen Sie Unix-Befehle in Ihrem Python-Programm aus

Unix ist ein Betriebssystem, das um 1969 von Ken Thompson und Dennis Ritchie in den AT & T Bell Labs entwickelt wurde. Es gibt viele interessante Unix-Befehle, mit denen Sie verschiedene Aufgaben ausführen können. Die Frage ist, können wir solche Befehle direkt in einem Python-Programm verwenden? Das werde ich Ihnen in diesem Tutorial zeigen.

Der Unix-Befehl ls listet alle Dateien im Verzeichnis auf. Wenn Sie setzen ls Wie in einem Python-Skript erhalten Sie Folgendes, wenn Sie das Programm ausführen:

Traceback (letzter Aufruf zuletzt): Datei "test.py", Zeile 1, in  ls NameError: Name 'ls' ist nicht definiert

Dies zeigt, dass der Python-Interpreter behandelt ls als Variable und erfordert, dass sie definiert (d. h. initialisiert) wird und sie nicht als Unix-Befehl behandelt hat.

os.system ()

Eine Lösung für dieses Problem ist die Verwendung os.system () von Python's os Modul.

Wie in der Dokumentation erwähnt, os.system ():

Führt den Befehl (eine Zeichenfolge) in einer Subshell aus. Dies wird durch Aufrufen der Standard C-Funktion system () implementiert und unterliegt den gleichen Einschränkungen.

Also können wir das ausführen ls Befehl in Python wie folgt:

import os os.system ('ls')

Dadurch wird die Liste der Dateien in Ihrem aktuellen Verzeichnis zurückgegeben, in dem sich Ihre Dateien befinden .py Programm befindet sich.

Nehmen wir ein anderes Beispiel. Wenn Sie das aktuelle Datum und die aktuelle Uhrzeit zurückgeben möchten, können Sie den Unix-Befehl verwenden Datum wie folgt:

import os os.system ('date')

In meinem Fall erhielt ich das Ergebnis des obigen Skripts:

Di 24. Mai um 17:29:20 Uhr MESZ 2016

Anruf()

Obwohl os.system () funktioniert, wird nicht empfohlen, da es als etwas alt und veraltet gilt. Eine empfohlene Lösung ist Python's Subprozess Modul call (args) Funktion. Wie in der Dokumentation zu dieser Funktion erwähnt:

Führen Sie den von args beschriebenen Befehl aus. Warten Sie, bis der Befehl abgeschlossen ist, und geben Sie dann das Returncode-Attribut zurück.

Wenn wir das ausführen wollen ls Unix-Befehl mit dieser Methode können wir Folgendes tun:

Aufruf des Aufrufs zum Importieren von Unterprozessen ('ls')

Mal sehen, wie wir das Datum mit Hilfe von zurückgeben können Subprozess Modul, aber machen wir das Beispiel interessanter.

import Subprozess time = subprozess.Popen ('date', stdout = subprozess.PIPE, stderr = subprozess.PIPE) ausgeben, err = time.communicate () print 'It is', ausgeben

Das obige Beispiel kann einfacher mit ausgeführt werden check_output (), wie folgt:

import subprocess time = subprozess.check_output ('date') print 'Es ist', Uhrzeit

Die Ausgabe der obigen Skripte lautet:

Es ist Di 24. Mai, 19:14:22 Uhr MESZ 2016

Die obigen Beispiele zeigen die Flexibilität bei der Verwendung verschiedener Subprozess Funktionen und wie wir die Ergebnisse an Variablen übergeben können, um weitere Operationen auszuführen.

Fazit

Wie wir in diesem Tutorial gesehen haben, können Unix-Befehle mit der aufgerufen werden Subprozess Modul, das durch seine verschiedenen Funktionen viel Flexibilität beim Arbeiten mit Unix-Befehlen bietet. Weitere Informationen zu diesem Modul und seinen verschiedenen Funktionen finden Sie in der Python-Dokumentation.