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, inls NameError: name 'ls' is not defined
Dies weist darauf hin, dass der Python-Interpreterls
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 vonos.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 denls
-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-Befehldate
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
Obwohlos.system()
可以工作,但不推荐使用,因为它被认为有点旧且已弃用。更好的解决方案是 Python 子进程模块中的call(args)
funktioniert, wird es nicht empfohlen, da es als etwas alt und veraltet gilt. Eine bessere Lösung ist die Funktioncall(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 wirls
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 demsubprocess
-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 mitcheck_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 verschiedenersubprocess
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 demsubprocess
-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!