Auf STDIN eines externen Programmes reagieren und schreiben

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
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

Hallo,

gibt es eigentlich irgendeinen Weg auf eine STDIN Forderung eines anderen Programmes
zu reagieren und den STDIN zu bedienen?

also eigentlich sind dies zwei Probleme:
- Loop in Python bis eine STDIN Abfrage eines anderen Programmes auftaucht
- STDIN bedienen
(frueher bei MSDOS konnte man doch auch den Tastaturinterrupt direkt ueber Assembler
ansprechen um solche Sachen zu machen)

Hat jemand Ideen wie man so etwas anpackt ?

Der Grund der Frage ist eine Parameterstudie mit einem externen Programm welches
halt andauernd Werte abfragt.

Vielen Dank fuer eure Hilfe!
Liffi
User
Beiträge: 153
Registriert: Montag 1. Januar 2007, 17:23

Vielleicht hilft dir pexpect[1] weiter.
expect hat geschrieben: It runs programs and watches output. When output matches a given pattern Pexpect can respond as if a human were typing responses. Pexpect can be used for automation, testing, and screen scraping.
[1]http://www.noah.org/wiki/pexpect
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

Vielen Dank,
was ich so darueber auf die Schnelle gelesen hab klingt ziemlich gut,

leider hab ich das Modul nicht in der Firmeninstallation, da muss noch ein bisschen
Aufwand betrieben werden, bis ich es hier testen kann, grosse Muehlen malen langsamer ...

Sobald ich das Modul hier habe werd ich mich nochmal melden,
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du kannst das ganze Modul zum testen auch runterladen und in den Ordner mit deinem Script packen. Da es sich nur um py-Dateien handelt, kannst du diese später einfach wieder löschen, wenn eine richtige Installation vorliegt.
Das Leben ist wie ein Tennisball.
Benutzeravatar
ts7343
User
Beiträge: 69
Registriert: Mittwoch 5. Mai 2010, 13:48

Vielen Dank nochmal fuer die Tipps, it works!!!

ich stell hier mal ein bisschen Code hinein fuer den naechsten Interessenten:

Code: Alles auswählen

import pexpect
child=pexpect.spawn('fesolver %s n 1' %ifile_name)
child.expect(Bacon .*>)
print child.before
print child.after
child.sendline('assign "%s" unit 11' %ifile)
child.expect(Bacon .*>)
print child.before
print child.after
child.sendline('input 11')
child.expect('Bacon .*\.DES>')
print child.before
print child.after
child.sendline('.fin 1')
Flusslogik durch:

Code: Alles auswählen

i=child.expect ([pattern1, pattern2, pattern3, etc])
Antworten