Можно ли предварительно заполнить input () в интерфейсе командной строки Python 3? - PullRequest
30 голосов
/ 14 декабря 2011

Я использую Python 3.2 в Ubuntu 11.10 (Linux). Кусок моего нового кода выглядит так:

text = input("TEXT=")

Можно ли получить некоторую предопределенную строку после приглашения, чтобы я мог настроить ее при необходимости? Должно быть так:

python3 file
TEXT=thepredefinedtextishere

Теперь я нажимаю Backspace 3 раза

TEXT=thepredefinedtextish

Теперь я нажимаю Введите , и переменная text должна быть thepredefinedtextish

1 Ответ

26 голосов
/ 14 декабря 2011

Если ваш интерпретатор Python связан с GNU readline, input() будет использовать его. В этом случае должно работать следующее:

import readline

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
...