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 не найден, функция сначала проверяет наличие
__loader__PEP 302 в 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.9/library/linecache.html