Spec-Zone.ru › Python 3.10

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 в последующем вызове. Это позволяет избежать выполнения ввода-вывода до тех пор, пока строка фактически не потребуется, без необходимости непрерывного переноса глобальных переменных модуля.

New in version 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.10/library/linecache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API