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

In diesem Tutorial werden wir über den Python-Systembefehl lernen. Zuvor haben wir über Python Zufallszahl gelernt.

Python Systembefehl

Beim Erstellen eines Programms in Python müssen Sie möglicherweise einige Shell-Befehle für Ihr Programm ausführen. Wenn Sie zum Beispiel die Pycharm-IDE verwenden, werden Sie möglicherweise feststellen, dass es eine Option gibt, Ihr Projekt auf GitHub zu teilen. Und Sie wissen wahrscheinlich, dass die Dateiübertragung von git durchgeführt wird, das über die Befehlszeile bedient wird. Daher führt Pycharm im Hintergrund einige Shell-Befehle aus, um dies zu tun. In diesem Tutorial lernen wir jedoch einige Grundlagen zur Ausführung von Shell-Befehlen aus Ihrem Python-Code.

Python os.system() Funktion

Wir können den Systembefehl mit der os.system() Funktion ausführen. Gemäß dem offiziellen Dokument wurde gesagt, dass

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

Jedoch, wenn der Befehl irgendeine Ausgabe erzeugt, wird sie an den Standardausgabestrom des Interpreters gesendet. Die Verwendung dieses Befehls wird nicht empfohlen. Im folgenden Code werden wir versuchen, die Version von git mithilfe des Systembefehls 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

Beachten Sie, dass wir die Ausgabe des git-Version-Befehls nicht auf die Konsole drucken. Sie wird gedruckt, weil die Konsole hier der Standardausgabestrom ist.

Python subprocess.call() Funktion

In dem vorherigen Abschnitt haben wir gesehen, dass die Funktion os.system() funktioniert. Es ist jedoch keine empfohlene Methode, Shell-Befehle auszuführen. Wir werden das Python subprocess-Modul verwenden, um Systembefehle auszuführen. Wir können Shell-Befehle mithilfe der Funktion subprocess.call() ausführen. Siehe den folgenden Code, der äquivalent zum vorherigen Code ist.

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 dieselbe sein.

Python subprocess.check_output() Funktion

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

import subprocess

cmd = "date"

# gibt die Ausgabe als Byte-String zurück
returned_output = subprocess.check_output(cmd)

# Verwendung der decode() Funktion, um den Byte-String in einen String umzuwandeln
print('Current date is:', returned_output.decode("utf-8"))

Es wird eine Ausgabe wie folgt produzieren

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

Also haben wir in den obigen Abschnitten grundlegende Ideen zur Ausführung von Python-Systembefehlen diskutiert. Aber es gibt keine Grenze beim Lernen. Wenn Sie möchten, können Sie mehr über Python-Systembefehle mit dem Subprocess-Modul aus der offiziellen Dokumentation erfahren.

Source:
https://www.digitalocean.com/community/tutorials/python-system-command-os-subprocess-call