Windows cmd mit Python interaktiv benutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Samstag 15. November 2008, 01:17

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 15. November 2008, 01:22

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Samstag 15. November 2008, 02:10

Ja genau das habe ich versucht. Pexpect und Expect scheinen nur für Linux Systeme verwendbar zu sein, schade.
Benutzeravatar
jens
Moderator
Beiträge: 8461
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Samstag 15. November 2008, 10:03

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 :(

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten