Möglichkeiten zum Ausführen von Unix-Befehlen in Ihrem Python-Programm

WBOY
Freigeben: 2023-08-30 10:45:12
Original
1371 Leute haben es durchsucht

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列出目录中的所有文件。如果您将lswird 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  ls NameError: name 'ls' is not defined
Nach dem Login kopieren

Dies weist darauf hin, dass der Python-Interpreterlsals Variable behandelt und erfordert, dass sie definiert (d. h. initialisiert) wird, und sie nicht als Unix-Befehl behandelt.

os.system()

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')
Nach dem Login kopieren

Dadurch wird eine Liste der Dateien im aktuellen Verzeichnis zurückgegeben, in dem sich das.pyProgramm befindet. Mein aktuelles Verzeichnis sieht so aus:

env unixfile.py workwithexcel
Nach dem Login kopieren

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-Befehldatewie folgt verwenden:

import os os.system('date')
Nach dem Login kopieren

In meinem Fall habe ich mit dem obigen Skript Folgendes erhalten:

Thu 24 Apr 2022 10:42:41 AM EAT
Nach dem Login kopieren

Anruf()

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 wirlsUnix-Befehle mit dieser Methode ausführen möchten, können wir Folgendes tun:

from subprocess import call call('ls')
Nach dem Login kopieren

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)
Nach dem Login kopieren

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)
Nach dem Login kopieren

Die Ausgabe des obigen Skripts ist:

Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'
Nach dem Login kopieren

Das obige Beispiel zeigt die Flexibilität der Verwendung verschiedenersubprocessFunktionen und wie wir die Ergebnisse für weitere Operationen an Variablen übergeben können.

Fazit

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!