readline.md
1> **Источник:** https://python-all.ru/3.1/library/readline.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 16.5. `readline` – интерфейс GNU readline89*Платформы:* Unix1011Модуль `readline` определяет ряд функций для упрощения автодополнения и чтения/записи файлов истории из интерпретатора Python. Этот модуль можно использовать напрямую или через модуль [`rlcompleter`](https://python-all.ru/3.1/library/rlcompleter.html#module-rlcompleter). Настройки, сделанные с помощью этого модуля, влияют на поведение как интерактивной подсказки интерпретатора, так и подсказок, предлагаемых встроенной функцией [`input()`](https://python-all.ru/3.1/library/functions.html#input).1213> **Примечание**14>15> На MacOS X модуль `readline` может быть реализован с использованием библиотеки `libedit` вместо GNU readline.16>17> Файл конфигурации для `libedit` отличается от файла GNU readline. Если программно загружать строки конфигурации, можно проверить наличие текста «libedit» в `readline.__doc__`, чтобы отличить GNU readline от libedit.1819Модуль `readline` определяет следующие функции:2021#### `readline.parse_and_bind(string)`2223Разбирает и выполняет одну строку из файла инициализации readline.2425#### `readline.get_line_buffer()`2627Возвращает текущее содержимое буфера строки.2829#### `readline.insert_text(string)`3031Вставляет текст в командную строку.3233#### `readline.read_init_file([filename])`3435Разбирает файл инициализации readline. По умолчанию используется последнее имя файла.3637#### `readline.read_history_file([filename])`3839Загружает файл истории readline. По умолчанию используется имя файла4041`~/.history`4243.4445#### `readline.write_history_file([filename])`4647Сохраняет файл истории readline. По умолчанию используется имя файла4849`~/.history`5051.5253#### `readline.clear_history()`5455Очищает текущую историю. (Примечание: эта функция недоступна, если установленная версия GNU readline её не поддерживает.)5657#### `readline.get_history_length()`5859Возвращает желаемый размер файла истории. Отрицательные значения означают неограниченный размер.6061#### `readline.set_history_length(length)`6263Устанавливает количество строк для сохранения в файле истории.6465[`write_history_file()`](https://python-all.ru/3.1/library/readline.html#readline.write_history_file)6667использует это значение для усечения файла истории при сохранении. Отрицательные значения означают неограниченный размер.6869#### `readline.get_current_history_length()`7071Возвращает количество строк, находящихся в данный момент в истории. (Это отличается от7273[`get_history_length()`](https://python-all.ru/3.1/library/readline.html#readline.get_history_length)7475, который возвращает максимальное количество строк, которое будет записано в файл истории.)7677#### `readline.get_history_item(index)`7879Возвращает текущее содержимое элемента истории с индексом8081*index*8283.8485#### `readline.remove_history_item(pos)`8687Удаляет элемент истории, указанный его позицией, из истории.8889#### `readline.replace_history_item(pos, line)`9091Заменяет элемент истории, указанный его позицией, на заданную строку.9293#### `readline.redisplay()`9495Изменяет отображаемое на экране, чтобы оно соответствовало текущему содержимому буфера строки.9697#### `readline.set_startup_hook([function])`9899Устанавливает или удаляет функцию startup\_hook. Если указан100101*function*102103, она будет использоваться как новая функция startup\_hook; если он опущен или равен104105`None`106107, любая уже установленная функция-перехватчик удаляется. Функция startup\_hook вызывается без аргументов непосредственно перед тем, как readline выводит первое приглашение.108109#### `readline.set_pre_input_hook([function])`110111Устанавливает или удаляет функцию pre\_input\_hook. Если указан112113*function*114115, она будет использоваться как новая функция pre\_input\_hook; если он опущен или равен116117`None`118119, любая уже установленная функция-перехватчик удаляется. Функция pre\_input\_hook вызывается без аргументов после вывода первого приглашения и непосредственно перед тем, как readline начинает чтение вводимых символов.120121#### `readline.set_completer([function])`122123Устанавливает или удаляет функцию завершения (completer). Если указан124125*function*126127, она будет использоваться как новая функция завершения; если он опущен или равен128129`None`130131, любая уже установленная функция завершения удаляется. Функция завершения вызывается в виде132133`function(text, state)`134135, для136137*state*138139в140141`0`142143,144145`1`146147,148149`2`150151, ..., пока она не вернёт значение, не являющееся строкой. Она должна возвращать следующее возможное завершение, начинающееся с152153*text*154155.156157#### `readline.get_completer()`158159Возвращает функцию завершения или160161`None`162163, если функция завершения не была установлена.164165#### `readline.get_completion_type()`166167Возвращает тип выполняемого завершения.168169#### `readline.get_begidx()`170171Возвращает начальный индекс области автодополнения readline.172173#### `readline.get_endidx()`174175Возвращает конечный индекс области автодополнения readline.176177#### `readline.set_completer_delims(string)`178179Устанавливает разделители слов readline для автодополнения.180181#### `readline.get_completer_delims()`182183Возвращает разделители слов readline для автодополнения.184185#### `readline.set_completion_display_matches_hook([function])`186187Устанавливает или удаляет функцию отображения завершений. Если указан188189*function*190191, она будет использоваться как новая функция отображения завершений; если он опущен или равен192193`None`194195, любая уже установленная функция отображения завершений удаляется. Функция отображения завершений вызывается в виде196197`function(substitution, [matches], longest_match_length)`198199каждый раз, когда необходимо отобразить совпадения.200201#### `readline.add_history(line)`202203Добавляет строку в буфер истории, как если бы это была последняя введённая строка.204205> **См. также**206>207> **Модуль [`rlcompleter`](https://python-all.ru/3.1/library/rlcompleter.html#module-rlcompleter)**208>209> Завершение идентификаторов Python в интерактивном приглашении.210211## 16.5.1. Пример212213Следующий пример демонстрирует, как использовать функции чтения и записи истории модуля `readline` для автоматической загрузки и сохранения файла истории с именем `.pyhist` из домашнего каталога пользователя. Код ниже обычно выполняется автоматически во время интерактивных сессий из файла [**PYTHONSTARTUP**](https://python-all.ru/3.1/using/cmdline.html#envvar-PYTHONSTARTUP) пользователя.214215```python216import os217import readline218histfile = os.path.join(os.path.expanduser("~"), ".pyhist")219try:220 readline.read_history_file(histfile)221except IOError:222 pass223import atexit224atexit.register(readline.write_history_file, histfile)225del os, histfile226```227228Следующий пример расширяет класс [`code.InteractiveConsole`](https://python-all.ru/3.1/library/code.html#code.InteractiveConsole) для поддержки сохранения и восстановления истории.229230```python231import code232import readline233import atexit234import os235236class HistoryConsole(code.InteractiveConsole):237 def __init__(self, locals=None, filename="<console>",238 histfile=os.path.expanduser("~/.console-history")):239 code.InteractiveConsole.__init__(self, locals, filename)240 self.init_history(histfile)241242 def init_history(self, histfile):243 readline.parse_and_bind("tab: complete")244 if hasattr(readline, "read_history_file"):245 try:246 readline.read_history_file(histfile)247 except IOError:248 pass249 atexit.register(self.save_history, histfile)250251 def save_history(self, histfile):252 readline.write_history_file(histfile)253```254