linecache
— Произвольный доступ к текстовым строкам¶
Исходный код: Lib/linecache.py
Модуль linecache
позволяет получить любую строку из исходного файла
Python при попытке внутренней оптимизации, используя кэш, общий
случай, когда многие строки считываются из одного файла. Он используется
модулем traceback
, чтобы восстановить строки исходного кода для включения в
отформатированный трейсбэк.
Используется функция tokenize.open()
чтобы открыть файлы. Эта функция использует
tokenize.detect_encoding()
для получения кодировки файла; при отсутствии маркера кодировки
кодировка файла по умолчанию имеет значение UTF-8.
Модуль linecache
определяет следующие функции:
-
linecache.
getline
(filename, lineno, module_globals=None)¶ Получить строку lineno из файла с именем filename. Эта функция никогда не будет поднимать исключение — она будет возвращать
''
на ошибках (заканчивающийся newline символ будет включен для линий, которые найдены).Если файл с именем 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_globalsNone
в более позднем вызове. Она старается не делать I/O, пока строка фактически не понадобится, без необходимости содержания модуля globals бесконечно.Добавлено в версии 3.5.
Пример:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'