Wie interagiert der Unterprozess von Python mehrmals wie eine Shell mit dem Terminal?

In Python können wir das subprocess-Modul verwenden, um Systembefehle auszuführen und die Ausgabe der Befehle zu erhalten. Aber standardmäßig kann ein Unterprozess einen Befehl nur einmal ausführen und die Ausgabe des Befehls zurückgeben und kann nicht mehrere interaktive Operationen wie das Terminal durchführen.

Also, wie kann man dieses Problem lösen? Tatsächlich ist es sehr einfach, wir müssen nur die Popen-Methode im Unterprozessmodul verwenden, um einen Unterprozess zu erstellen, und die Kommunikationsmethode verwenden, um mit dem Unterprozess zu interagieren.

Hier ist ein Beispielcode für Ihre Referenz:

import subprocess
while True:
    cmd = input("$ ")
    if cmd == "exit":
        break
    p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    output, errors = p.communicate()
    print(output.decode("utf-8"))
    print(errors.decode("utf-8"))

Im obigen Code erhalten wir kontinuierlich vom Benutzer eingegebene Befehle, indem wir eine While-Schleife erstellen. Wenn der Benutzer den Exit-Befehl eingibt, verlässt das Programm die Schleife.

Innerhalb der Schleife verwenden wir die Methode subprocess.Popen, um einen Unterprozess zu erstellen, und die Methode communication, um mit dem Unterprozess zu interagieren. In der Methode communication können wir Daten in die Standardeingabe des untergeordneten Prozesses schreiben und die Standardausgabe und den Standardfehler des untergeordneten Prozesses lesen.

<

おすすめ

転載: blog.csdn.net/weixin_38612163/article/details/129952669