nachdem ich jetzt schon Diverses u.a. hier im Forum gelesen habe, bin ich zumindest in der Lage mit subprocess einen Prozess zu starten.
Das was ich im Prinzip machen möchte ist aus einem GUI (wxPython) heraus eine Eingabeaufforderung zu starten, dort dann von Python aus eine Eingabe machen, so dass dann dort ein weiterer (interaktiver) Prozess abläuft. (und das ganze plattformunabhängig)
Anmerkung: auf den interaktiven Prozess habe ich keinen Einfluss und der läuft auch heute schon in einer Eingabeaufforderung.
das ist bis jetzt das wie ich es machen würde:
Code: Alles auswählen
import subprocess
import os
command = os.getenv("ComSpec") #["c:\\WINDOWS\\system32\\cmd.exe"]
process = subprocess.Popen( [command], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
process.stdin.write("cd ..\n") # hier steht dann der Aufruf zum interaktiven Prozess
process.stdin.close()
process.wait() # ich hoffe, dass hiermit gewartet wird bis der interaktive Prozess beendet ist
Wenn ich hinter process.stdin.close() ein print process.stdout.read() setze, dann bekomme ich in der Ausgabe im SPE das geschrieben, was ich in der "schwarzen Dos-Kiste" erwarten würde.
Wenn ich das Skript über die Eingabeaufforderung starte, dann wird die Ausgabe auch nicht in eine neue Eingabeaufforderung geschrieben, sondern in die bereits geöffnete.
Warum geht denn diese verflixte Eingabeaufforderung nicht auf? Wenn ich eine andere exe-Datei angebe, dann geht es.
Kann mir das einer erklären, mir sagen wo der Fehler bei meinem Vorgehen ist oder mir vielleicht einen kleinen Hinweis geben wonach ich noch suchen könnte?
Diesen interaktiven Prozess direkt zu starten, bekomme ich auch nicht hin, weil der Prozess irgendwie nicht zu einem process.stdout.read() kommt, weil kein EOF erreicht wird...
Bin für eure Hilfe sehr dankbar. Ich bin mit meinem Latein gerade am Ende.
Barbara