from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
print handle.stdout.read()
handle.flush()
Wenn Sie Sie müssen nicht shell=True
verwenden werden Popen()
mit einer Liste anstelle einer Befehlsfolge, Beispiel liefern:
c = ['ls', '-l'] #Linux
und öffnen Sie es dann ohne Schale.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
Dies ist die manuelle und flexible Möglichkeit, einen Subprozess von Python aus aufzurufen. gehen Wenn Sie nur den Ausgang wollen, für:
from subproccess import check_output
print check_output('dir')
Um ein neues Konsole GUI-Fenster zu öffnen und ausführen X:
import os
os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)
Sie nicht eine tatsächliche zeigten code base, also habe ich mir unten ein Befehlsbeispiel gebildet, basierend auf 'dir 'in Windows und' ls' in linux zum Auflisten von Ordnerinhalten. – Torxed
@Torxed Ich habe deinen Code ausprobiert und es gibt ein paar Dinge, die ich nicht mag: Ich sehe keine neue Konsole. Ich möchte eine zweite Konsole erstellen und in der Lage sein, die Ausgabe des Programms zu lesen, das ich mit 'popen' in der neuen Konsole starte. In meinem Hauptprogramm brauche ich nicht die Ausgabe des Programms, das ich mit 'popen' ausführe. Ich muss es nur in einer anderen Konsole sehen. Könnten Sie bitte ein Beispiel dafür geben, wie dies umgesetzt werden sollte? –
Das war nicht klar aus Ihrer ursprünglichen Problembeschreibung, weil Sie sehen, "Öffnen Sie ein Skript in einer separaten Konsole" das ist genau was '.Popen()' tut, und wenn Sie Ihren Prozessmonitor überprüfen, werden Sie feststellen, dass ein cmd .exe wird gestartet, indem Sie '.Popen()' aufrufen, es ist einfach nicht sichtbar, da es sich um einen Subprozess Ihrer Anwendung handelt und dieser "stummgeschaltet" ist. Normalerweise öffnen Sie keine neuen GUI-Fenster, nur um Aufgaben auszuführen. Darf ich fragen, warum Sie das wollen? weil es rückwärts zu mir klingt:/ – Torxed