Python Systembefehl – os.system() und subprocess.call()

Beim Programmieren in Python müssen Sie möglicherweise einige Shell-Befehle für Ihr Programm ausführen. Wenn Sie beispielsweise die Pycharm IDE verwenden, bemerken Sie vielleicht, dass es eine Option gibt, Ihr Projekt auf Github zu teilen. Und Sie wissen wahrscheinlich, dass die Dateiübertragung mit Git erfolgt, das über die Befehlszeile bedient wird. Pycharm führt also einige Shell-Befehle im Hintergrund aus, um dies zu tun. In diesem Tutorial werden wir jedoch einige Grundlagen über das 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 durch Aufrufen der Standard-C-Funktion system() implementiert wird und die gleichen Einschränkungen hat.

Erzeugt der Befehl jedoch einen Output, wird dieser an den Standard-Output-Stream 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 zu ermitteln.

import os

cmd = "git --version"

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


Der folgende Output wurde in Ubuntu 16.04 gefunden, wo Git bereits installiert ist.

git version 2.14.2
returned value: 0

Beachten Sie, dass wir den Output des Git-Version-Befehls nicht auf die Konsole drucken, er wird gedruckt, weil die Konsole hier der Standard-Output-Stream ist.

Python subprocess.call() Funktion

Im vorherigen Abschnitt haben wir gesehen, dass die Funktion os.system() gut funktioniert. Aber es ist nicht der empfohlene Weg, Shell-Befehle auszuführen. Wir werden das Python-Subprocess-Modul 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)

Python subprocess.check_output() Funktion

Bisher haben wir die Systembefehle mit Hilfe von Python ausgeführt. Aber wir konnten den von diesen Befehlen produzierten Output nicht manipulieren. Mit der Funktion subprocess.check_output() können wir den Output in einer Variablen 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 einen Output wie den folgenden erzeugen

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

Also, in den obigen Abschnitten haben wir über grundlegende Ideen zum Ausführen von os.system() und subprocess.call() gesprochen. Aber es gibt keine Grenzen im Lernen für einen Command.

[tags]

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren:

centron Managed Cloud Hosting in Deutschland

Wie berechnet man den BLEU-Score in Python?

Python
Wie berechnet man den BLEU-Score in Python? Der BLEU-Score in Python ist eine Metrik, die die Güte von maschinellen Übersetzungsmodellen misst. Ursprünglich wurde er nur für Übersetzungsmodelle entwickelt, wird jedoch…