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 не найден, функция сначала проверяет наличие загрузчика PEP 302
__loader__в module_globals. Если такой загрузчик есть и в нём определён методget_source, источник строк определяется этим методом (еслиget_source()возвращаетNone, возвращается''). Наконец, если filename — относительное имя файла, оно ищется относительно записей в пути поиска модулей,sys.path.
-
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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/linecache.html