Heim  >  Artikel  >  Backend-Entwicklung  >  Möglichkeiten zum Ausführen von Unix-Befehlen in Ihrem Python-Programm

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

WBOY
WBOYOriginal
2023-08-30 10:45:121398Durchsuche

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.

os.system()

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

Anruf()

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.

Fazit

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!

Stellungnahme:
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