Konvertieren Sie in eine Zeichenfolge, während Sie die Standardausgabe mit dem Python-Unterprozess ausgeben

Sie können subprocess.PIPE im Unterprozess verwenden, um die Standardausgabe zu erhalten, diese wird jedoch nicht in der Konsole angezeigt. Ich wollte es als str erhalten, während ich es in Echtzeit auf der Konsole anzeigte, also versuchte ich herauszufinden, wie es geht.

--Zusatz--

Dieser mit "Ertrag" ist besser.

Code

import sys
import subprocess


def run_and_capture(cmd):
    '''
    :param cmd:str auszuführender Befehl.
    :rtype: str
    :return:Standardausgabe.
    '''
    #Hier der Prozess(Asynchron)Start.
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    buf = []
    
    while True:
        #Lesen Sie eine Zeile aus dem Puffer.
        line = proc.stdout.readline()
        buf.append(line)
        sys.stdout.write(line)
        
        #Puffer leeren+Ende des Prozesses.
        if not line and proc.poll() is not None:
            break
    
    return ''.join(buf)


if __name__ == '__main__':
    msg = run_and_capture('du ~/')
    print msg

Erläuterung

  1. Starten Sie den Prozess mit subprocess.Popen (cmd, ...)
  1. Holen Sie sich die Standardausgabe und geben Sie sie zeilenweise mit Popen.stdout.readline () weiter
  2. Sammeln Sie alle Standard-Piped-Ausgaben und warten Sie, bis der Vorgang abgeschlossen ist
  3. Verbinden Sie Zeichenfolgen mit ''. Join (buf)

Recommended Posts

Konvertieren Sie in eine Zeichenfolge, während Sie die Standardausgabe mit dem Python-Unterprozess ausgeben
So konvertieren / wiederherstellen Sie einen String mit [] in Python
[Python] Datum in Zeichenfolge konvertieren
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Ändern Sie das Standardausgabeziel in eine Datei in Python
Grundlagen des Python-Lernens ~ Wie wird eine Zeichenkette ausgegeben (angezeigt)? ~
Erstellen Sie eine Nachricht, die der Lokalisierung entspricht, mit einer Python-Übersetzungszeichenfolge
Ausgabe in eine CSV-Datei mit Python
Schreiben Sie die Standardausgabe in eine Datei
Konvertieren Sie die Liste mit Python in DataFrame
Konvertieren Sie eine Zeichenfolge in ein Bild
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
[Einführung in Python] So geben Sie eine Zeichenfolge in einer Print-Anweisung aus
Versuchen Sie, mit Python3 eine Zeichenfolge aus einem Bild zu extrahieren
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Konvertieren Sie Memos sofort mit Python 2to3
Geben Sie Farbzeichen mit Python zu hübsch aus
[Python] So konvertieren Sie eine zweidimensionale Liste in eine eindimensionale Liste
Python-Protokoll mit GAE an die Konsole ausgeben
Konvertieren Sie Excel-Daten mit Python in JSON
Konvertiere Hiragana mit Python (Beta) in Romaji
[Python] So invertieren Sie eine Zeichenfolge
UnicodeEncodeError hat Probleme mit der Standardausgabe von Python3
Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Ich habe versucht, ein Programm zu erstellen, das Hexadezimalzahlen mit Python in Dezimalzahlen konvertiert
Hinweis: [Python3] Konvertiert datetime in eine Zeichenfolge in einem beliebigen Format
Mayungos Python Learning Episode 6: Ich habe versucht, eine Zeichenkette in eine Zahl umzuwandeln
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Lesen einer CSV-Datei mit Python 2/3
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Einbetten von Variablen in Python-Strings
Konvertieren Sie PDFs mit Python in Massenbilder
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich möchte ein Spiel mit Python machen
Konvertieren Sie die SVG-Datei mit Python in png / ico
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Ich habe versucht, LLVM IR mit Python auszugeben
Entscheide dich für einen Laborauftrag mit Python (Fiktion)
Python Hinweis: Wenn Sie einer Zeichenfolge einen Wert zuweisen
Schritte zum Erstellen eines Twitter-Bots mit Python
Versuchen Sie, mit Python eine Diedergruppe zu bilden
So geben Sie "Ketsumaimo" standardmäßig in Python aus
Entschlüsseln Sie eine unter iOS mit Python verschlüsselte Zeichenfolge
Ich möchte mit Python in eine Datei schreiben
Zubu Amateur will Python starten
[CentOS8] So geben Sie die Standard-Python-Ausgabe in das Systemd-Protokoll aus
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
[Vorläufig] So konvertieren Sie eine Zeichenfolge mit kivy-ios Memo kivy v1.8.0 in Shift_jis
Kombinieren Sie sich wiederholende Zeichenfolgen mit regulären Python-Ausdrücken zu einer.
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde