Spec-Zone.ru › Python 3.14

linecache — Произвольный доступ к текстовым строкам

Исходный код: Lib/linecache.py

Модуль linecache позволяет получить любую строку из исходного файла Python и при этом пытается оптимизировать распространённый случай, когда из одного файла считывается много строк, используя для этого внутренний кэш. Модуль traceback использует его для получения исходных строк и включения их в форматированную трассировку стека.

Для открытия файлов используется функция tokenize.open(). Эта функция использует tokenize.detect_encoding(), чтобы определить кодировку файла; если токен кодировки отсутствует, по умолчанию используется UTF-8.

Модуль linecache определяет следующие функции:

linecache.getline(filename, lineno, module_globals=None)

Получить строку lineno из файла с именем filename. Эта функция никогда не вызывает исключение — в случае ошибки она возвращает '' (у найденных строк сохраняется завершающий символ новой строки).

Если filename указывает на замороженный модуль (начинается с '<frozen '), функция попытается получить настоящее имя файла из module_globals['__file__'], если module_globals не равно None.

Если файл с именем filename не найден, функция сначала проверяет, есть ли в module_globals загрузчик PEP 302 __loader__. Если такой загрузчик есть и он определяет метод get_source, исходные строки определяются этим методом (если get_source() возвращает None, возвращается ''). Наконец, если filename — относительное имя файла, поиск выполняется относительно элементов пути поиска модулей, sys.path.

Изменено в версии 3.14: Добавлена поддержка filename замороженных модулей.

linecache.clearcache()

Очистить кэш. Используйте эту функцию, если строки из файлов, ранее прочитанных с помощью getline(), больше не нужны.

linecache.checkcache(filename=None)

Проверить актуальность кэша. Используйте эту функцию, если файлы в кэше могли измениться на диске и вам нужна обновлённая версия. Если filename не указан, будут проверены все записи кэша.

linecache.lazycache(filename, module_globals)

Сохранить достаточно сведений о модуле, не связанном с файлом, чтобы позднее получить его строки с помощью getline(), даже если при последующем вызове module_globals равно None. Это позволяет отложить ввод-вывод до момента, когда строка действительно понадобится, не сохраняя глобальные переменные модуля на неопределённое время.

Добавлено в версии 3.5.

Пример:

>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'

© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/linecache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API