[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben

Dieses Mal werde ich erklären, wie man Systembefehle in Python ausführt, die jeder liebt, und die Ergebnisse ausgeben. Es wird als Systembefehl bezeichnet, aber es ist eine Möglichkeit, alle Befehle auszuführen, die auf dem Terminal in Python verwendet werden können.

So erhalten Sie nur Download und Upload von Speedtest json mit jq https://qiita.com/Bob_Alice/items/83c0686f56012b300780

Verwenden Sie die Python-Bibliothek "Unterprozess"

Zunächst können Sie Systembefehle mithilfe der Python-Bibliothek "subprocess" einfach ausführen.

In Python ist es sehr einfach zu bedienen

result = subprocess.run(['Befehl','そのBefehlの引数'], stdout=subprocess.PIPE)

Dann

result.returncode

Der Statuscode (Erfolg oder Misserfolg) des Befehls wird in eingegeben

result.stdout

Das Ergebnis der Standardausgabe wird zugewiesen.

Was tun, wenn mehrere Argumente vorhanden sind?

Wenn es mehrere Argumente gibt, scheint es verschiedene Möglichkeiten zu geben, aber es scheint ein Sicherheitsproblem zu geben. Dieses Mal wurden der zu verwendende Befehl und sein Argument für meine Verwendung entschieden, daher habe ich ein Shell-Skript erstellt, um ihn auszuführen. Shell-Skripte sind nicht schwierig. Speichern Sie einfach eine Datei mit den Befehlen und Argumenten, die Sie mit der Erweiterung .sh verwenden möchten. Dieses Mal bestand der Zweck darin, den folgenden Befehl auszuführen, der einen bestimmten Wert mit dem Befehl jq aus der vorbereiteten json-Datei ausgibt.

cat result.json | jq ".download.bandwidth"

Daher habe ich diesen Befehl in eine Datei mit dem Namen "get_download_bandwidth_from_result.sh" geschrieben und gespeichert.

Dann wurde es der folgende Python-Code.

import subprocess

result = subprocess.run(['sh','get_download_bandwidth_from_result.sh'], stdout=subprocess.PIPE)
print(result.returncode)
print(result.stdout)

Ausgabeergebnis

b'33052461\n'

Ich muss die Zeichen entschlüsseln

Wenn die Standardausgabe jedoch per Unterprozess empfangen wird, handelt es sich um ein codiertes Byte. Sie müssen es dekodieren, damit es normal aussieht.

Tiefer über Unterprozess (3 Serien, aktualisierte Version) https://qiita.com/HidKamiya/items/e192a55371a2961ca8a4

Deshalb

result.stdout.decode().strip().split('\n')

Auf diese Weise konnte ich entschlüsseln.

Da das Decourse-Ergebnis jedoch als Liste gespeichert ist, muss angegeben werden, dass es die erste (0.) Variable in der Liste ist, um es als einzelne Variable zu behandeln.

output = result.stdout.decode().strip().split('\n')[0]

Auf diese Weise wird die erste Zahl nach dem Ablauf in die variable Ausgabe eingegeben.

Das Endergebnis ist der folgende Python-Code.

import subprocess

result = subprocess.run(['sh','get_download_bandwidth_from_result.sh'], stdout=subprocess.PIPE)
print(result.returncode)
print(result.stdout)
print(result.stdout.decode().strip().split('\n'))

Dies ist perfekt. Das Ende.

Nachtrag

Beachten Sie, dass subprocess.run () nur mit Python 3.5 oder höher verwendet werden kann https://ja.ojit.com/so/python/232121

Recommended Posts

[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben
Eine Standardmethode zum Entwickeln und Verteilen von Paketen in Python
Ausführen externer Shell-Skripte und -Befehle in Python
Es ist einfach, SQL mit Python auszuführen und das Ergebnis in Excel auszugeben
[C / C ++] Übergeben Sie den in C / C ++ berechneten Wert an eine Python-Funktion, um den Prozess auszuführen, und verwenden Sie diesen Wert in C / C ++.
Eine einfache Möglichkeit, die in Python benötigte Zeit anzuzeigen und sie intelligenter zu verbessern
So zeigen Sie Bytes in Java und Python auf die gleiche Weise an
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
Ausgabe in Form eines Python-Arrays
So geben Sie eine Zeichenfolge in Python ein und geben sie unverändert oder in die entgegengesetzte Richtung aus.
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
So führen Sie einen Befehl mit einem Unterprozess in Python aus
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
[Python] So geben Sie Listenwerte der Reihe nach aus
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
[Python] Ändern Sie die Textfarbe und Hintergrundfarbe eines bestimmten Schlüsselworts in der Druckausgabe
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
Geben Sie "Farn programmgesteuert zeichnen" in den Zeichenprozess in Python ein
Verwendung der Methode __call__ in der Python-Klasse
Wahrscheinlich der einfachste Weg, um mit Python 3 ein PDF zu erstellen
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
Eine einfache Möglichkeit, mehrere for-Schleifen in Python zu vermeiden
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Einführung einer guten Methode zur Verwaltung von DB-Verbindungen in Python
Versuchen Sie einfach, einen Webhook mit ngrok und Python zu erhalten
So starten Sie den PC jeden Morgen zu einer festgelegten Zeit und führen das Python-Programm aus
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Ich suche einen einheitlichen Weg, um auf Statusänderungen von Selenium für Python-Elemente zu warten
Ich habe auch versucht, die Funktionsmonade und die Zustandsmonade mit dem Generator in Python nachzuahmen
Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Führen Sie den Ausgabecode auf dem lokalen Webserver in Python als "A, gibt vor, B zu sein" aus
So bestimmen Sie die Existenz eines Selenelements in Python
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Drücken Sie den Echo-Befehl im Mac-Terminal, um Hello World auszugeben
[Einführung in Python] So geben Sie eine Zeichenfolge in einer Print-Anweisung aus
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Im Python-Befehl zeigt Python auf Python3.8
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
[Python] Die Rolle des Sterns vor der Variablen. Teilen Sie den Eingabewert und weisen Sie ihn einer Variablen zu
Exportieren und Ausgeben von Dateien in Python
[Python-Scraping] Geben Sie die URL und den Titel der Site mit einem bestimmten Schlüsselwort in eine Textdatei ein
[Python / Jupyter] Übersetzen Sie den Kommentar des in die Zwischenablage kopierten Programms und fügen Sie ihn in eine neue Zelle ein.
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python