2011-12-14 8 views
24

Estoy usando Python 3.2 en Ubuntu 11.10 (Linux). Un pedazo de mi nuevo código es el siguiente:¿Es posible prellenar una entrada() en la interfaz de línea de comando de Python 3?

text = input("TEXT=")

¿Es posible obtener alguna cadena predefinida después del indicador, por lo que puede ajustarlo si es necesario? Debería ser así:

python3 file 
TEXT=thepredefinedtextishere 

Ahora presione Retroceso 3 veces

TEXT=thepredefinedtextish 

Ahora pulse Introduzca, y la variable text debería ser thepredefinedtextish

+0

La respuesta corta es no, pero debe haber un truco 'curses' o' readline' para hacer esto. +1 para la pregunta. –

+0

"Enter blargh (Valor predeterminado: 3)" no hace lo que usted solicita, pero resuelve el mismo problema. –

+0

@LennartRegebro: Esto no tiene exactamente el mismo objetivo. Imagine que se supone que el usuario debe ingresar a una lista de rutas de búsqueda, con algunos valores predeterminados predefinidos. El usuario probablemente quiera complementar la lista predefinida en lugar de reemplazarla. –

Respuesta

21

Si el intérprete de Python está vinculado a GNU readline, input() lo usará. En este caso, lo siguiente debería funcionar:

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

No funciona en Mac OS X de forma predeterminada. Además, tuve que cambiar 'input()' a 'raw_input()' o arrojaría "NameError: name '* lo que escribí *' no está definido". –

+2

@EdwardFalk Esto no tiene nada que ver con Mac OS X. Está utilizando Python 2, mientras que esta pregunta es sobre Python 3. –

+0

Ahh, se perdió esa parte. –

Cuestiones relacionadas