readline.md
1> **Источник:** https://python-all.ru/3.0/library/readline.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `readline` – интерфейс GNU readline89*Платформы:* Unix1011Модуль `readline` определяет ряд функций для упрощения автодополнения и чтения/записи файлов истории из интерпретатора Python. Этот модуль можно использовать напрямую или через модуль [`rlcompleter`](https://python-all.ru/3.0/library/rlcompleter.html#module-rlcompleter). Настройки, сделанные с помощью этого модуля, влияют на поведение как интерактивной подсказки интерпретатора, так и подсказок, предлагаемых встроенной функцией [`input()`](https://python-all.ru/3.0/library/functions.html#input).1213Модуль `readline` определяет следующие функции:1415#### `[readline.parse_and_bind]readline.parse_and_bind(string)`1617Разбирает и выполняет одну строку из файла инициализации readline.1819#### `[readline.get_line_buffer]readline.get_line_buffer()`2021Возвращает текущее содержимое буфера строки.2223#### `[readline.insert_text]readline.insert_text(string)`2425Вставляет текст в командную строку.2627#### `[readline.read_init_file]readline.read_init_file([filename])`2829Разбирает файл инициализации readline. По умолчанию используется последнее имя файла.3031#### `[readline.read_history_file]readline.read_history_file([filename])`3233Загружает файл истории readline. По умолчанию используется имя файла3435`~/.history`3637.3839#### `[readline.write_history_file]readline.write_history_file([filename])`4041Сохраняет файл истории readline. По умолчанию используется имя файла4243`~/.history`4445.4647#### `[readline.clear_history]readline.clear_history()`4849Очищает текущую историю. (Примечание: эта функция недоступна, если установленная версия GNU readline её не поддерживает.)5051#### `[readline.get_history_length]readline.get_history_length()`5253Возвращает желаемый размер файла истории. Отрицательные значения означают неограниченный размер.5455#### `[readline.set_history_length]readline.set_history_length(length)`5657Устанавливает количество строк для сохранения в файле истории.5859[`write_history_file()`](https://python-all.ru/3.0/library/readline.html#readline.write_history_file)6061использует это значение для усечения файла истории при сохранении. Отрицательные значения означают неограниченный размер.6263#### `[readline.get_current_history_length]readline.get_current_history_length()`6465Возвращает количество строк, находящихся в данный момент в истории. (Это отличается от6667[`get_history_length()`](https://python-all.ru/3.0/library/readline.html#readline.get_history_length)6869, который возвращает максимальное количество строк, которое будет записано в файл истории.)7071#### `[readline.get_history_item]readline.get_history_item(index)`7273Возвращает текущее содержимое элемента истории с индексом7475*index*7677.7879#### `[readline.remove_history_item]readline.remove_history_item(pos)`8081Удаляет элемент истории, указанный его позицией, из истории.8283#### `[readline.replace_history_item]readline.replace_history_item(pos, line)`8485Заменяет элемент истории, указанный его позицией, на заданную строку.8687#### `[readline.redisplay]readline.redisplay()`8889Изменяет отображаемое на экране, чтобы оно соответствовало текущему содержимому буфера строки.9091#### `[readline.set_startup_hook]readline.set_startup_hook([function])`9293Устанавливает или удаляет функцию startup\_hook. Если указан9495*function*9697, она будет использоваться как новая функция startup\_hook; если он опущен или равен9899`None`100101, любая уже установленная функция-перехватчик удаляется. Функция startup\_hook вызывается без аргументов непосредственно перед тем, как readline выводит первое приглашение.102103#### `[readline.set_pre_input_hook]readline.set_pre_input_hook([function])`104105Устанавливает или удаляет функцию pre\_input\_hook. Если указан106107*function*108109, она будет использоваться как новая функция pre\_input\_hook; если он опущен или равен110111`None`112113, любая уже установленная функция-перехватчик удаляется. Функция pre\_input\_hook вызывается без аргументов после вывода первого приглашения и непосредственно перед тем, как readline начинает чтение вводимых символов.114115#### `[readline.set_completer]readline.set_completer([function])`116117Устанавливает или удаляет функцию завершения (completer). Если указан118119*function*120121, она будет использоваться как новая функция завершения; если он опущен или равен122123`None`124125, любая уже установленная функция завершения удаляется. Функция завершения вызывается в виде126127`function(text, state)`128129, для130131*state*132133в134135`0`136137,138139`1`140141,142143`2`144145, ..., пока она не вернёт значение, не являющееся строкой. Она должна возвращать следующее возможное завершение, начинающееся с146147*text*148149.150151#### `[readline.get_completer]readline.get_completer()`152153Возвращает функцию завершения или154155`None`156157, если функция завершения не была установлена.158159#### `[readline.get_completion_type]readline.get_completion_type()`160161Возвращает тип выполняемого завершения.162163#### `[readline.get_begidx]readline.get_begidx()`164165Возвращает начальный индекс области автодополнения readline.166167#### `[readline.get_endidx]readline.get_endidx()`168169Возвращает конечный индекс области автодополнения readline.170171#### `[readline.set_completer_delims]readline.set_completer_delims(string)`172173Устанавливает разделители слов readline для автодополнения.174175#### `[readline.get_completer_delims]readline.get_completer_delims()`176177Возвращает разделители слов readline для автодополнения.178179#### `[readline.set_completion_display_matches_hook]readline.set_completion_display_matches_hook([function])`180181Устанавливает или удаляет функцию отображения завершений. Если указан182183*function*184185, она будет использоваться как новая функция отображения завершений; если он опущен или равен186187`None`188189, любая уже установленная функция отображения завершений удаляется. Функция отображения завершений вызывается в виде190191`function(substitution, [matches], longest_match_length)`192193каждый раз, когда необходимо отобразить совпадения.194195#### `[readline.add_history]readline.add_history(line)`196197Добавляет строку в буфер истории, как если бы это была последняя введённая строка.198199> **См. также**200>201> **Модуль [`rlcompleter`](https://python-all.ru/3.0/library/rlcompleter.html#module-rlcompleter)**202>203> Завершение идентификаторов Python в интерактивном приглашении.204205## Пример206207Следующий пример демонстрирует, как использовать функции чтения и записи истории модуля `readline` для автоматической загрузки и сохранения файла истории с именем `.pyhist` из домашнего каталога пользователя. Код ниже обычно выполняется автоматически во время интерактивных сессий из файла [**PYTHONSTARTUP**](https://python-all.ru/3.0/using/cmdline.html#envvar-PYTHONSTARTUP) пользователя.208209```python210import os211histfile = os.path.join(os.environ["HOME"], ".pyhist")212try:213 readline.read_history_file(histfile)214except IOError:215 pass216import atexit217atexit.register(readline.write_history_file, histfile)218del os, histfile219```220221Следующий пример расширяет класс [`code.InteractiveConsole`](https://python-all.ru/3.0/library/code.html#code.InteractiveConsole) для поддержки сохранения и восстановления истории.222223```python224import code225import readline226import atexit227import os228229class HistoryConsole(code.InteractiveConsole):230 def __init__(self, locals=None, filename="<console>",231 histfile=os.path.expanduser("~/.console-history")):232 code.InteractiveConsole.__init__(self)233 self.init_history(histfile)234235 def init_history(self, histfile):236 readline.parse_and_bind("tab: complete")237 if hasattr(readline, "read_history_file"):238 try:239 readline.read_history_file(histfile)240 except IOError:241 pass242 atexit.register(self.save_history, histfile)243244 def save_history(self, histfile):245 readline.write_history_file(histfile)246```247