Seite 1 von 1

Windows cmd mit Python interaktiv benutzen

Verfasst: Samstag 15. November 2008, 01:17
von Crazed
Hallo, Ich wollte die command-line shell von Windows mittels Python interaktiv benutzen.
Dazu habe ich das Modul subprocess und die klasse Popen gefunden und ausgetestet.

Leider scheine ich ein kleines Problem zu haben, der subprocess ersetzt immer mit momentanen Prozess, d.h ich habe aufeinmal die Konsole anstatt das Python script dort stehen. Hat jemand sowas in der Art schonmal gemacht?

Ich möchte das es nachher so funktioniert:
>>> dir
file1.txt file2.txt file3.txt
>>> cd Downloads
>>> dir
bild.jpg downloader.exe
>>> exit

<ende des programms>
Also eigentlich nur eine cmd von Windows in einem Python script eingebettet.

Wäre dankbar für ein wenig Hilfe.

Verfasst: Samstag 15. November 2008, 01:22
von Leonidas
Schon mal versucht mit dem Subprocess via Stdin und Stderr zu kommunizieren?

Aber um ehrlich zu sein, erwarte ich nicht, dass das funktionieren wird, da cmd vermutlich auch ein pty (oder das Windows-Equivalent dazu erwartet) und dort eher (p)expect das Mittel der Wahl wäre.

Verfasst: Samstag 15. November 2008, 02:10
von Crazed
Ja genau das habe ich versucht. Pexpect und Expect scheinen nur für Linux Systeme verwendbar zu sein, schade.

Verfasst: Samstag 15. November 2008, 10:03
von jens
Ich denke schon das es funktionieren wird.

Probleme wird es aber geben, wenn Programme länger laufen/sich nicht beenden und wenn Programme kein std.flush() machen, siehe auch: http://www.python-forum.de/topic-16459.html

Für Programme die sich nicht beenden, kann man einen Timeout benutzten, siehe: http://www.python-forum.de/topic-16539.html

Ich bin ja immer noch auf der Suche nach einer Terminal-Emulation für Windows. Hab aber noch nicht wirklich was gefunden :(