Website-Suche

Python Systembefehl - os.system(), subprocess.call()


In diesem Tutorial werden wir etwas über den Python-Systembefehl lernen. Zuvor haben wir über die Zufallszahlen in Python gelernt.

Python-Systembefehl

Während Sie ein Programm in Python erstellen, müssen Sie möglicherweise einige Shell-Befehle für Ihr Programm ausführen. Zum Beispiel, wenn Sie die Pycharm-IDE verwenden, werden Sie feststellen, dass es eine Option gibt, Ihr Projekt auf GitHub zu teilen. Und Sie wissen wahrscheinlich, dass der Dateitransfer mit git erfolgt, das über die Befehlszeile betrieben wird. Daher führt Pycharm im Hintergrund einige Shell-Befehle aus, um dies zu erledigen. In diesem Tutorial werden wir jedoch einige Grundlagen zum Ausführen von Shell-Befehlen aus Ihrem Python-Code lernen.

Python os.system() Funktion

Wir können Systembefehle mit der Funktion os.system() ausführen. Laut dem offiziellen Dokument wurde gesagt, dass

Dies wird durch den Aufruf der Standard-C-Funktion system() implementiert und hat die gleichen Einschränkungen.

Wenn der Befehl jedoch Ausgaben erzeugt, wird er an den Standardausgabestrom des Interpreters gesendet. Die Verwendung dieses Befehls wird nicht empfohlen. Im folgenden Code werden wir versuchen, die Version von git mit dem Systembefehl git --version herauszufinden.

import os

cmd = "git --version"

returned_value = os.system(cmd)  # returns the exit code in unix
print('returned value:', returned_value)

Die folgende Ausgabe wurde in Ubuntu 16.04 gefunden, wo Git bereits installiert ist.

git version 2.14.2
returned value: 0

Beachte, dass wir die Ausgabe des git version Befehls nicht auf der Konsole ausgeben; sie wird ausgegeben, weil die Konsole hier der Standardausgabestrom ist.

Python subprocess.call() Funktion

Im vorherigen Abschnitt haben wir gesehen, dass die Funktion os.system() gut funktioniert. Es wird jedoch nicht empfohlen, Shell-Befehle auf diese Weise auszuführen. Wir werden das Python-Subprozessmodul verwenden, um Systembefehle auszuführen. Wir können Shell-Befehle mit der Funktion subprocess.call() ausführen. Siehe den folgenden Code, der dem vorherigen Code entspricht.

import subprocess

cmd = "git --version"

returned_value = subprocess.call(cmd, shell=True)  # returns the exit code in unix
print('returned value:', returned_value)

Und die Ausgabe wird ebenfalls gleich sein.

Python subprocess.check_output() Funktion

Bisher haben wir die Systembefehle mit Hilfe von Python ausgeführt. Aber wir konnten die Ausgabe, die durch diese Befehle erzeugt wurde, nicht manipulieren. Mit der Funktion subprocess.check_output() können wir die Ausgabe in einer Variable speichern.

import subprocess

cmd = "date"

returns output as byte string
returned_output = subprocess.check_output(cmd)

using decode() function to convert byte string to string
print('Current date is:', returned_output.decode("utf-8"))

Es wird eine Ausgabe wie folgt erzeugen.

Current date is: Thu Oct  5 16:31:41 IST 2017

In den obigen Abschnitten haben wir grundlegende Ideen zur Ausführung von Python-Systembefehlen besprochen. Aber beim Lernen gibt es keine Grenzen. Wenn Sie möchten, können Sie mehr über Python-Systembefehle mit dem Subprozessmodul aus der offiziellen Dokumentation lernen.