Expect like syntax in Python
Guy Gascoigne - Piggford
guy at wyrdrune.com
Sun Feb 3 23:49:32 EST 2002
More information about the Python-list mailing list
Sun Feb 3 23:49:32 EST 2002
- Previous message (by thread): Expect like syntax in Python
- Next message (by thread): Expect like syntax in Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
What I really want is some way to get anonymous functions that can be passed as part of a list of paramaters and called at the appropriate time. There doesn't appear to be any way to get that particular effect in Python. As for expect like functions in java - luckily I don't need all of the features of expect, more a case of simple telnet scripting. Between our own telnet code and pattern matching we've actually got something that works pretty well so far. BTW I copied my original question to the end of the message in case it rang any bells. Guy "Donn Cave" <donn at drizzle.com> wrote in message news:1012765918.861234 at yasure... > Quoth "Guy Gascoigne - Piggford" <guy at wyrdrune.com>: > Which I missed, but when I had thoughts like that once upon a time, > the best I could think of was to use the exception mechanism. Or > abuse it, if you like. Make pattern objects, feed them to the expect > parser in a try block, which would raise it as an exception to dispatch > to the appropriate except block. Horrible. > > But you must have support for pseudotty devices, which is a low level > functionality that is not so portable. To my knowledge available only > on UNIX and similar platforms, and not on all such for Python. Have > that in Java? I don't know, but if not, you're sunk. > > Donn Cave, donn at drizzle.com > Quoth "Guy Gascoigne - Piggford" <guy at wyrdrune.com>: >I'm trying to find a way to write something like expect in a python >module, and I'm having trouble getting the syntax the way that I want. >In expect I can write something like this: > >expect { > -re "ast login" { > pass > } > -re "ogin" { > send user > } > -re "sword" { > send password > } >} > >etc. > >The nearest that I've managed to get to in Python is something like >this: > > while 1: > try: > if self.expect( ( "ast login", 0 ), > ( "ogin", self.send_user ), > ( "sword", self.send_password ), > ( "\$", "done" ) ) == "done": > break > except IndexError: > skipcount += 1 > if skipcount == 2: > raise IndexError > >Where send_user and send_password are separately defined functions. >What I really want to be able to do is to define the action beside the >pattern, calling short functions that are defined separately makes it >harder to read and trickier to follow exactly what is happening. I've >also played around with just returning an index, but that also gets >ugly as the list of possible patterns gets larger. > >Am I missing something? I'm fairly new to python but I don't see a >way to get what I want. Does anyone have any suggestions on how to >handle this more cleanly? >
- Previous message (by thread): Expect like syntax in Python
- Next message (by thread): Expect like syntax in Python
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list