So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python

Einführung

Wenn Sie Shell-Befehle in Python verarbeiten möchten, verwenden Sie im Allgemeinen das Modul "Unterprozess". Es ist möglich, das Ergebnis als Liste mit stdout.readlines () im Modul zu übergeben. Wenn der auszuführende Shell-Befehl jedoch mehrere Zeilen umfasst, wird der Zeilenvorschubcode (Zeilenvorschub) zusammen übergeben. Um die Liste mit entferntem Zeilenvorschubcode (Zeilenvorschub) zu übergeben, sollte daher die folgende Verarbeitung durchgeführt werden.

Hier erklären wir anhand eines Beispiels für die Ausführung von ls -l aus Python als Shell-Befehl.

Dieses Mal habe ich drei Skripte auf die folgenden drei Arten erstellt.

Tatsächlich ist das Ergebnisbeispiel, wenn ls -l ausgeführt wird, wie folgt.

$ ls -l
total 12
-rwxr-xr-x 1 root root 260 Jun 16 18:48 res_cmd_lfeed.py
-rwxr-xr-x 1 root root 378 Jun 16 18:49 res_cmd_no_lfeed.py
-rwxr-xr-x 1 root root 247 Jun 16 18:48 res_cmd.py

Um das gleiche Ergebnis wie bei der Shell-Ausführung zu erhalten

Holen Sie sich das erste Array-Element von communic ().

res_cmd.py


#!/usr/bin/python

import subprocess

def res_cmd(cmd):
  return subprocess.Popen(
      cmd, stdout=subprocess.PIPE,
      shell=True).communicate()[0]

def main():
  cmd = ("ls -l")
  print(res_cmd(cmd))

if __name__ == '__main__':
  main()

Wie unten gezeigt, ist das Ausführungsergebnis des Skripts dasselbe wie bei der Ausführung von ls -l.

$ ./res_cmd.py
total 12
-rwxr-xr-x 1 root root 260 Jun 16 18:48 res_cmd_lfeed.py
-rwxr-xr-x 1 root root 378 Jun 16 18:49 res_cmd_no_lfeed.py
-rwxr-xr-x 1 root root 247 Jun 16 18:48 res_cmd.py

So erhalten Sie eine Liste mit Zeilenvorschub

Verwenden Sie stdout.readlines ().

res_cmd_lfeed.py


#!/usr/bin/python

import subprocess

def res_cmd_lfeed(cmd):
  return subprocess.Popen(
      cmd, stdout=subprocess.PIPE,
      shell=True).stdout.readlines()

def main():
  cmd = ("ls -l")
  print(res_cmd_lfeed(cmd))

if __name__ == '__main__':
  main()

Sie können eine Liste der Ergebnisse erhalten, die Zeilenvorschübe enthalten.

$ ./res_cmd_lfeed.py
['total 12\n', '-rwxr-xr-x 1 root root 261 Jun 16 18:52 res_cmd_lfeed.py\n', '-rwxr-xr-x 1 root root 380 Jun 16 18:52 res_cmd_no_lfeed.py\n', '-rwxr-xr-x 1 root root 248 Jun 16 18:51 res_cmd.py\n']

So erhalten Sie eine Liste ohne Zeilenvorschub

Verwenden Sie "stdout.readlines ()" und "rstrip (" \ n ")" in der Listeneinschlussnotation.

res_cmd_no_lfeed.py


#!/usr/bin/python

import subprocess

def res_cmd_lfeed(cmd):
  return subprocess.Popen(
      cmd, stdout=subprocess.PIPE,
      shell=True).stdout.readlines()

def res_cmd_no_lfeed(cmd):
  return [str(x).rstrip("\n") for x in res_cmd_lfeed(cmd)]

def main():
  cmd = ("ls -l")
  print(res_cmd_no_lfeed(cmd))

if __name__ == '__main__':
  main()

Sie können eine Ergebnisliste ohne Zeilenvorschub erhalten.

$ ./res_cmd_no_lfeed.py
['total 12', '-rwxr-xr-x 1 root root 261 Jun 16 18:52 res_cmd_lfeed.py', '-rwxr-xr-x 1 root root 380 Jun 16 18:52 res_cmd_no_lfeed.py', '-rwxr-xr-x 1 root root 248 Jun 16 18:51 res_cmd.py']

Recommended Posts

So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
[sh] Das Speichern der Befehlsausführung führt zu Variablen
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie eine Liste der integrierten Ausnahmen für Python
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
So bestimmen Sie die Existenz eines Selenelements in Python
So überprüfen Sie die Speichergröße einer Variablen in Python
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
So löschen Sie einen Taple in einer Liste (Python)
Kopieren Sie die Liste in Python
linux / c> link> Ruft das Ausführungsergebnis des Shell-Befehls im C-Programm ab.> Mir wurde beigebracht, wie man popen () verwendet.
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
So formatieren Sie eine Liste von Wörterbüchern (oder Instanzen) in Python
So ermitteln Sie die Anzahl der Stellen in Python
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
So führen Sie einen Befehl mit einem Unterprozess in Python aus
[Python] So geben Sie Listenwerte der Reihe nach aus
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
Im Python-Befehl zeigt Python auf Python3.8
[Python] So erstellen Sie eine Liste von Zeichenfolgen Zeichen für Zeichen
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
So mischen Sie einen Teil der Python-Liste (at random.shuffle)
Verwendung der Methode __call__ in der Python-Klasse
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
So verbinden Sie den Inhalt der Liste mit einer Zeichenfolge
So zählen Sie die Anzahl der Vorkommen jedes Elements in der Liste in Python mit der Gewichtung
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht
Übergeben von Argumenten an Python-Skripte in SPSS Modeler Batch
Wie Sie die interne Struktur eines Objekts in Python kennen
Versuchen Sie, die Thread-Liste der Nachrichten (Abneigung) mit Python zu erhalten.
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Zeigen Sie eine Liste der Alphabete in Python 3 an
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[Python] So löschen Sie eine Zeile / Spalte in einer Tabelle (Liste der Optionen für die Drop-Methode)
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Das Ergebnis der Installation von Python auf Anaconda
Wie bekomme ich Stacktrace in Python?
Wie kann man schnell die Häufigkeit des Auftretens von Zeichen aus einer Zeichenfolge in Python zählen?
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
So überwachen Sie den Ausführungsstatus von sqlldr mit dem Befehl pv
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
[Python / Tkinter] Übergeben von Argumenten an den Befehl
Zusammenfassung der Verwendung der Python-Liste
So aktualisieren Sie die Python-Version von Cloud Shell in GCP
So löschen Sie mehrere angegebene Positionen (Indizes) in einer Python-Liste
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
So blenden Sie die Eingabeaufforderung aus, wenn Sie Python in Visual Studio 2015 ausführen
So senden Sie ein visualisiertes Bild der in Python erstellten Daten an Typetalk
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap