Документация Python неофициальный перевод

linecache.md

50 строк · 4.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3/library/linecache.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `linecache` – Произвольный доступ к строкам текста89**Исходный код:** [Lib/linecache.py](https://python-all.ru/src/3.14/Lib/linecache.py)1011---1213Модуль `linecache` позволяет получить произвольную строку из исходного файла Python, внутренне оптимизируя с помощью кэша часто встречающийся случай чтения множества строк из одного файла. Он используется модулем [`traceback`](https://python-all.ru/3/library/traceback.html#module-traceback) для получения строк исходного кода для включения в форматированный traceback.1415Функция [`tokenize.open()`](https://python-all.ru/3/library/tokenize.html#tokenize.open) используется для открытия файлов. Эта функция использует [`tokenize.detect_encoding()`](https://python-all.ru/3/library/tokenize.html#tokenize.detect_encoding) для получения кодировки файла; при отсутствии токена кодировки кодировка файла по умолчанию равна UTF-8.1617Модуль `linecache` определяет следующие функции:1819#### `linecache.getline(filename, lineno, module_globals=None)`2021Возвращает строку *lineno* из файла с именем *filename*. Эта функция никогда не генерирует исключение – при ошибках она возвращает `''` (символ завершающего перевода строки будет включен для найденных строк).2223Если *filename* указывает на замороженный модуль (начинается с `'<frozen '`), функция попытается получить реальное имя файла из `module_globals['__file__']`, если *module\_globals* не равно `None`.2425Если файл с именем *filename* не найден, функция сначала проверяет наличие [**PEP 302**](https://python-all.ru/3/library/linecache.html) `__loader__` в *module\_globals*. Если такой загрузчик существует и определяет метод `get_source`, то он определяет строки исходного кода (если `get_source()` возвращает `None`, то возвращается `''`). Наконец, если *filename* является относительным именем файла, он ищется относительно записей в пути поиска модулей, `sys.path`.2627Изменено в версии 3.14: Поддержка *filename* замороженных модулей.2829#### `linecache.clearcache()`3031Очищает кэш. Используйте эту функцию, если строки из файлов, ранее прочитанных с помощью [`getline()`](https://python-all.ru/3/library/linecache.html#linecache.getline), больше не нужны.3233#### `linecache.checkcache(filename=None)`3435Проверяет кэш на валидность. Используйте эту функцию, если файлы в кэше могли измениться на диске и требуется обновленная версия. Если *filename* опущен, проверяются все записи в кэше.3637#### `linecache.lazycache(filename, module_globals)`3839Захватывает достаточно деталей о модуле, не основанном на файле, чтобы впоследствии можно было получить его строки через [`getline()`](https://python-all.ru/3/library/linecache.html#linecache.getline), даже если *module\_globals* равно `None` в последующем вызове. Это позволяет избежать операций ввода-вывода до тех пор, пока строка действительно не понадобится, без необходимости постоянно хранить глобалы модуля.4041Добавлено в версии 3.5.4243Пример:4445```python46>>> import linecache47>>> linecache.getline(linecache.__file__, 8)48'import sys\n'49```50