2011-12-14 3 views
24

Sto usando Python 3.2 su Ubuntu 11.10 (Linux). Un pezzo del mio nuovo codice è simile al seguente:È possibile eseguire il prefill di un input() nell'interfaccia della riga di comando di Python 3?

text = input("TEXT=")

E 'possibile ottenere una certa stringa predefinita dopo il prompt, quindi posso regolarlo, se necessario? Dovrebbe essere simile a questo:

python3 file 
TEXT=thepredefinedtextishere 

Ora premere Backspace 3 volte

TEXT=thepredefinedtextish 

Ora mi preme Enter, e la variabile text dovrebbe essere thepredefinedtextish

+0

La risposta breve è no, ma c'è destinato ad essere un '' curses' o trucco readline' per fare questo. +1 per la domanda. –

+0

"Enter blargh (Default: 3)" non fa quello che chiedi, ma risolve lo stesso problema. –

+0

@LennartRegebro: questo non ha esattamente lo stesso scopo. Immagina che l'utente debba inserire un elenco di percorsi di ricerca, con alcune impostazioni predefinite predefinite. Probabilmente l'utente vorrà integrare l'elenco predefinito piuttosto che sostituirlo. –

risposta

21

Se il vostro interprete Python è collegato a GNU readline, input() lo userà. In questo caso, il seguente dovrebbe funzionare:

def input_with_prefill(prompt, text): 
    def hook(): 
     readline.insert_text(text) 
     readline.redisplay() 
    readline.set_pre_input_hook(hook) 
    result = input(prompt) 
    readline.set_pre_input_hook() 
    return result 
+0

Non funziona su Mac OS X per impostazione predefinita. Inoltre, ho dovuto cambiare 'input()' per 'raw_input()' o lanciava "NameError: name '* quello che ho digitato *' non è definito". –

+2

@EdwardFalk Questo non ha nulla a che fare con Mac OS X. Stai usando Python 2, mentre questa domanda riguarda Python 3. –

+0

Ah, manca quella parte. –