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 не найден, функция будет искать его в пути поиска модулей,
sys.path, после предварительной проверки на наличие PEP 302__loader__в module_globals, в случае, если модуль был импортирован из zipfile или другого источника импорта, не являющегося файловой системой.
-
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–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/linecache.html