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–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/linecache.html