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_globalsNoneв последующем вызове. Это позволяет избежать ввода-вывода до тех пор, пока строка фактически не потребуется, не загружая глобальные переменные модуля на неопределённое время.Новое в версии 3.5.
Пример:
>>> import linecache >>> linecache.getline(linecache.__file__, 8) 'import sys\n'
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/linecache.html