Seite 1 von 1

like a Bash

Verfasst: Donnerstag 23. Januar 2003, 10:32
von akIra
Salût,
ich würde gerne den Input gleich bei der Eingabe mit einer Liste abgleichen, also ungefähr wie in der Bash, wenn man TAB verwendet. raw_input kommt ja wahrscheinlich nicht in Frage, und eine fetch-Key Lösung währe zu umständlich.

Jemand ne Idee ?

Merci,
aki

PS: gibts es ein Python Pendant zu clrscr() ?

Re: like a Bash

Verfasst: Donnerstag 23. Januar 2003, 18:25
von joerg
akIra hat geschrieben:ich würde gerne den Input gleich bei der Eingabe mit einer Liste abgleichen, also ungefähr wie in der Bash, wenn man TAB verwendet. raw_input kommt ja wahrscheinlich nicht in Frage, und eine fetch-Key Lösung währe zu umständlich.
Die Bash benutzt dazu die readline-Bibliothek, und die gibt es auch als Python-Modul, zumindest unter UNIX/Linux. Da kann man auch konfigurieren, wie sie den Abgleich macht. Es gibt auch zusätzlich ein rlcompleter-Modul, welches im interaktiven Python-Interpreter sehr komfortabel ist, da hast Du gleich eine Beispielanwendung.

Zu clrscr fällt mir leider nichts Plattformübergreifendes ein.

Jörg

Re: like a Bash

Verfasst: Freitag 24. Januar 2003, 13:47
von akIra
yup, dass ist zwar genau das was ich suche, aber "Availability: Unix." : (

Noch ne Idee für M$ Win ?

Ciao,
akI

Re: like a bash

Verfasst: Montag 27. Januar 2003, 13:21
von akIra
Heya,
here it is...

Code: Alles auswählen

import msvcrt
a = ""
c = ""
l = ["Herbert","Herberd","Hermes"]

def resChar(c):
    global l
    if c[0] == 'o' and len(c) > 2:
        ct = 0
        d = c
        c = c[2:]
        x = "\n"
        #Suche ob die Eingabe in Liste(String) existiert
        for e in l:
            if e[:len(c)] == c:
                x = x + e + "\t"
                ct = ct + 1
        #Wenn etwas gefunden...
        if not x  == '\n':
            if ct == 1:
                msvcrt.putch(" ")
            else:
                print x
                #Alten Ausruck wiederherstellen
                for x in d:
                    msvcrt.putch(x)

while 1:
    a = msvcrt.getche()
    if ord(a) == 13: 
        break        
    elif ord(a) == 32: 
        c = c + " "
    else:
        c = c + a
    resChar(c)
vielleicht brauchts ja jemand...

Dieses Beispiel soll beim Befehl 'o', die folgenden, möglichen Namen anzeigen...

Kommentare sind erwünscht ! :shock:

Ciao,
akI