like a Bash

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
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

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() ?
joerg
User
Beiträge: 188
Registriert: Samstag 17. August 2002, 17:48
Wohnort: Berlin
Kontaktdaten:

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
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

yup, dass ist zwar genau das was ich suche, aber "Availability: Unix." : (

Noch ne Idee für M$ Win ?

Ciao,
akI
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

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
Antworten