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