Spec-Zone.ru › Python 3.9

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 не найден, функция сначала проверяет наличие __loader__ PEP 302 в 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/linecache.html

Spec-Zone.ru

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