2017-12-19 2 views
0

Ich führe Cmd-Befehle mit Python-Subprozess-Modul. Die Ausführung dieser Cmd-Befehle (z. B. Ausführen einer Batch-Datei, einer .exe-Datei) öffnet ein neues Eingabeaufforderungsfenster. Wie liest man die Ausgabe eines neu geöffneten Cmd-Fensters mit Python?Python: Leseausgabe beim Ausführen von Cmd-Befehlen

I folgenden Code verwenden Befehle vom Benutzer zur Verfügung gestellt, auszuführen:

process = subprocess.Popen(command, cwd = working_directory, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 

I process.communicate() Methode bin mit dem Ausgang zu lesen. Es erlaubt mir jedoch, nur die Ausgabe des vorhandenen Eingabeaufforderungsfensters zu lesen. Wenn der Benutzer einen Befehl bereitstellt, der ein neues Eingabeaufforderungsfenster auslöst, wie kann dann die Ausgabe dieses Fensters gelesen werden?

+0

https://docs.python.org/3/library/subprocess.html#subprocess. check_output – lemonhead

+0

Was hast du bisher versucht? –

+0

@ pankajmishra Ich benutze folgenden Code, um die Cmd-Befehle auszuführen, die von verwendet werden. Wenn der Benutzer den Befehl gibt, der das neue Befehlsfenster öffnet, suche ich nach einer Lösung, um die Ausgabe aus dem neu geöffneten Befehlsfenster zu lesen. Bis jetzt kann ich nur die Ausgabe aus dem vorhandenen cmd-Fenster lesen und nicht das neu geöffnete Fenster. Vielen Dank für Ihre Aufmerksamkeit im Voraus. :) 'process = subprocess.Popen (Befehl, cwd = Arbeitsverzeichnis, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)' –

Antwort

0

Code unten öffnet eine neue Eingabeaufforderung gibt einen Befehl auszuführen, und die Ausgabe dieses Befehlsfenster anzuzeigen

from subprocess import Popen,CREATE_NEW_CONSOLE,PIPE 

# /K option tells cmd to run the command and keep the command window from closing. You may use /C instead to close the command window after the 

command='cmd /C help' 
proc=Popen(command,creationflags=CREATE_NEW_CONSOLE,stdout=PIPE) 
output=proc.communicate()[0] 
print ('').join(output) 
Verwandte Themen