2013-09-29 7 views
5

Ich möchte in der Lage sein, Eingaben vom Benutzer (über raw_input() oder ein Modul) und in der Lage sein, automatisch Text eingegeben werden, die sie hinzufügen, löschen oder können ändern. Ich weiß, in Javascript, wenn Sie eine Eingabeaufforderung verwenden, können Sie es tun wieStarten von raw_input() mit vordefinierten Text

var = prompt("Enter your name: ","put name here") 

und es wird wie folgt angezeigt:

Enter your name: 
put name here 

wo 'put name here' in das Textfeld ein und kann geändert werden. Ich hoffe, dies in einer Shell-Umgebung (ich verwende Unix) im Gegensatz zu einem Fenster zu implementieren.

Irgendwelche Möglichkeiten, dies zu tun?

Oh und sag mir, wenn ich klarstellen muss, was ich mir erhoffe.


Ich glaube nicht, dass Sie verstehen, was ich versuche zu tun.

Ich möchte im Grunde die Eingabeaufforderung in die Eingabe einschließen, aber den Benutzer in der Lage sein, die Eingabeaufforderung zurück/bearbeiten Sie sie, wenn sie möchten.

Das Skript würde möglicherweise für einen einfachen Shell-basierten Ein-Zeilen-Texteditor und ein Tab-Completion-Typ-Ding verwendet werden.

+8

Dies ist * wirklich schwierig *. Denken Sie daran, 'Geben Sie Ihren Namen [Standardname]:' und einfügen 'Default Name', wenn die Eingabe die leere Zeichenfolge ist; das ist ziemlich Standard für Skripte. – Ryan

+1

mögliche Duplikate von [Python: wie man die Zeichenkette ändert und bearbeitet, die auf den Bildschirm gedruckt und zurückgelesen wurde?] (Http://stackoverflow.com/questions/7248076/python-how-to-modify-edit-the-string- print-to-screen-and-read-it-back) – sashkello

+0

Schauen Sie sich http://stackoverflow.com/questions/187621/how-to-make-a-python-command-line-program-autocomplete-arbitrary-things an -nicht-int auch. –

Antwort

3

Auf UNIX- und UNIX-Systemen, wie Mac OS X und Linux, können Sie das Modul readline verwenden. Unter Windows können Sie pyreadline verwenden.

Wenn Sie es so machen MiniTech in seinem Kommentar schlägt vor, schreiben Sie eine kleine Funktion es leichter zu machen:

def input_default(prompt, default): 
    return raw_input("%s [%s] " % (prompt, default)) or default 

name = input_default("What is your name?", "Not Sure") 
2

Mmm, irgendwie hacken, aber versuchen diese.

Fenster:

import win32com.client as win 

shell = win.Dispatch("WScript.Shell").SendKeys("Put name here") 
raw_input("Enter your name: ") 

In Linux/Unix-Umgebung, können Sie die pyreadline, readline oder curses Bibliotheken. Sie können eine mögliche Lösung finden here:

def rlinput(prompt, prefill=''): 
    readline.set_startup_hook(lambda: readline.insert_text(prefill)) 
    try: 
     return raw_input(prompt) 
    finally: 
     readline.set_startup_hook() 
Verwandte Themen