Для этого используется модуль readline
.
Простейший код, который я могу себе представить:
import readline
COMMANDS = ['extra', 'extension', 'stuff', 'errors',
'email', 'foobar', 'foo']
def complete(text, state):
for cmd in COMMANDS:
if cmd.startswith(text):
if not state:
return cmd
else:
state -= 1
readline.parse_and_bind("tab: complete")
readline.set_completer(complete)
raw_input('Enter section name: ')
Пример использования:
Enter section name: <tab>
email errors extension extra foo foobar stuff
Enter section name: e<tab>
email errors extension extra
Enter section name: ext<tab>
extension extra
Помимо завершения, readline
предоставляет вам:
- Строка редактирования
- Конфигурация привязки клавиш (включая режимы emacs и vi)
- История (стрелка вверх, чтобы вызвать предыдущие значения)
- История поиска, сохранения и загрузки