Seite 1 von 1

Auf STDIN eines externen Programmes reagieren und schreiben

Verfasst: Dienstag 28. Februar 2012, 11:12
von ts7343
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!

Re: Auf STDIN eines externen Programmes reagieren und schrei

Verfasst: Dienstag 28. Februar 2012, 12:04
von Liffi
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

Re: Auf STDIN eines externen Programmes reagieren und schrei

Verfasst: Dienstag 28. Februar 2012, 12:44
von ts7343
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,

Re: Auf STDIN eines externen Programmes reagieren und schrei

Verfasst: Dienstag 28. Februar 2012, 12:52
von EyDu
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.

Re: Auf STDIN eines externen Programmes reagieren und schrei

Verfasst: Mittwoch 29. Februar 2012, 14:24
von ts7343
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])