Это возможный для Python принять вход как это:
Folder name: Download
Но вместо пользователя, вводящего "Загрузку", это уже там как начальное значение. Если пользователь хочет отредактировать его как "Загрузки" все, что он должен сделать, добавляют' и нажимают Enter.
Используя нормальную входную команду:
folder=input('Folder name: ')
все, что я могу получить, является пустой подсказкой:
Folder name:
Существует ли простой способ сделать это, что я отсутствую?
Функции стандартной библиотеки input()
и raw_input()
не имеют такой функциональности. Если вы используете Linux, вы можете использовать модуль readline
для определения функции ввода, которая использует значение предварительного заполнения и расширенное редактирование строки:
import readline
def rlinput(prompt, prefill=''):
readline.set_startup_hook(lambda: readline.insert_text(prefill))
try:
return input(prompt) # or raw_input in Python 2
finally:
readline.set_startup_hook()
Если вы это сделаете, пользователю придется удалить существующее слово. Как насчет предоставления значения по умолчанию, если пользователь нажимает «return»?
>>> default_folder = "My Documents"
>>> try: folder = input("folder name [%s]:" %default_folder)
... except SyntaxError: folder = default_folder
Полагаю, вы имеете в виду из командной строки. Я никогда не видел начальных значений для приглашений командной строки, они обычно имеют форму:
Folder [default] :
, что в коде просто:
res = raw_input('Folder [default] : ')
res = res or 'default'
В качестве альтернативы вы можете попробовать что-то сделать с помощью модуля curses в Python.
Я думаю, что лучшим (самым простым и переносимым) решением является комбинация ответов @rlotun и @Stephen:
default = '/default/path/'
dir = raw_input('Folder [%s]' % default)
dir = dir or default