Heim > Artikel > Backend-Entwicklung > Möglichkeiten zum Ausführen von Unix-Befehlen in Ihrem Python-Programm
Unix ist ein Betriebssystem, das um 1969 von Ken Thompson und Dennis Ritchie in den AT&T Bell Laboratories entwickelt wurde. Es gibt viele interessante Unix-Befehle, mit denen wir verschiedene Aufgaben ausführen können. Die Frage ist, können wir einen solchen Befehl direkt in einem Python-Programm verwenden? Das werde ich Ihnen in diesem Tutorial zeigen.
Der Unix-Befehlls
列出目录中的所有文件。如果您将 ls
wird unverändert in ein Python-Skript eingefügt, und wenn Sie das Programm ausführen, erhalten Sie die folgenden Ergebnisse:
Traceback (most recent call last): File "test.py", line 1, in <module> ls NameError: name 'ls' is not defined
Dies weist darauf hin, dass der Python-Interpreter ls
als Variable behandelt und erfordert, dass sie definiert (d. h. initialisiert) wird, und sie nicht als Unix-Befehl behandelt.
Eine Lösung für dieses Problem ist die Verwendung von os.system()
aus dem Python-Betriebssystemmodul.
Wie in der Dokumentation erwähnt, os.system()
:
Führen Sie den Befehl (String) in der Subshell aus. Dies wird durch den Aufruf der Standard-C-Funktion system() erreicht und unterliegt denselben Einschränkungen.
Damit wir den ls
-Befehl in Python wie folgt ausführen können:
import os os.system('ls')
Dadurch wird eine Liste der Dateien im aktuellen Verzeichnis zurückgegeben, in dem sich das .py
Programm befindet. Mein aktuelles Verzeichnis sieht so aus:
env unixfile.py workwithexcel
Lassen Sie uns ein weiteres Beispiel geben. Wenn Sie das aktuelle Datum und die aktuelle Uhrzeit zurückgeben möchten, können Sie den Unix-Befehl date
wie folgt verwenden:
import os os.system('date')
In meinem Fall habe ich mit dem obigen Skript Folgendes erhalten:
Thu 24 Apr 2022 10:42:41 AM EAT
Obwohl os.system()
可以工作,但不推荐使用,因为它被认为有点旧且已弃用。更好的解决方案是 Python 子进程模块中的 call(args)
funktioniert, wird es nicht empfohlen, da es als etwas alt und veraltet gilt. Eine bessere Lösung ist die Funktion call(args)
im Unterprozessmodul von Python. Wie in der Dokumentation zu dieser Funktion erwähnt:
Führen Sie den durch args beschriebenen Befehl aus. Warten Sie, bis der Befehl abgeschlossen ist, und geben Sie dann das Returncode-Attribut zurück.
Wenn wir ls
Unix-Befehle mit dieser Methode ausführen möchten, können wir Folgendes tun:
from subprocess import call call('ls')
Sehen wir uns an, wie man mit dem subprocess
-Modul ein Datum zurückgibt, aber machen wir das Beispiel etwas interessanter.
import subprocess time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE) output, err = time.communicate() print('Todays date is ', output)
Das obige Beispiel kann einfacher mit check_output()
ausgeführt werden, wie unten gezeigt:
import subprocess time = subprocess.check_output('date') print('Todays date is', time)
Die Ausgabe des obigen Skripts ist:
Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'
Das obige Beispiel zeigt die Flexibilität der Verwendung verschiedener subprocess
Funktionen und wie wir die Ergebnisse für weitere Operationen an Variablen übergeben können.
Wie wir in diesem Tutorial gesehen haben, können Unix-Befehle mit dem subprocess
-Modul aufgerufen und ausgeführt werden, das durch seine verschiedenen Funktionen viel Flexibilität bei der Verwendung von Unix-Befehlen bietet. Weitere Informationen zu diesem Modul und seinen verschiedenen Funktionen finden Sie in der Python-Dokumentation.
Das obige ist der detaillierte Inhalt vonMöglichkeiten zum Ausführen von Unix-Befehlen in Ihrem Python-Programm. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!