Ich habe eine Cmd-Konsole eingerichtet, um Kartennamen für ein Magic: the Gathering-Sammlungsverwaltungssystem automatisch zu vervollständigen.
Er verwendet den Textparameter, um die Datenbank nach Karten abzufragen, und verwendet die Ergebnisse, um Karten automatisch zu vervollständigen / vorzuschlagen.
Allerdings haben diese Kartennamen mehrere Wörter, und Cmd führt die automatische Vervollständigung vom letzten -Feld bis zum Ende der Zeile aus.
Zum Beispiel:
%Vor% Ich habe versucht, manuell zu greifen, was ich wollte, aus dem Parameter line
, der die gewünschten Ergebnisse von der Datenbank erhält, aber das erste Wort kann nicht überschrieben werden:
Am Ende brauche ich den Auto-Completer, um so zu arbeiten:
%Vor% Abgesehen von dem oben beschriebenen manuellen Parsing-Versuch, habe ich auch versucht, Leerzeichen durch Pluszeichen zu ersetzen, und festgestellt, dass Cmd auch bei diesen Teilen vollkommen glücklich ist. Das Ersetzen von Leerzeichen durch Unterstriche funktioniert, aber es gibt eine Karte in Unhinged, die _____
heißt, also muss ich durch Akrobatik gehen, um die Strings zu löschen, da ich nicht nur line.replace("_", " ")
.
Hier ist ein lauffähiger Testcode:
%Vor% Ich habe die Cmdloop-Funktion überschrieben und es war ziemlich einfach. Ich musste nichts anderes ändern. Kopieren Sie einfach die cmdloop-Funktion aus dem Modul (Code finden Sie unter import cmd
, cmd.__file__
) und fügen Sie die zwei Zeilen zum Ändern der Trennzeichen hinzu:
Das hat es für mich getan. In Ihrem Fall möchten Sie möglicherweise das Trennzeichen entfernen, das die Probleme verursacht.
Tags und Links python command-line autocomplete