Spec-Zone.ru › Python 3.11

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

Spec-Zone.ru

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