linecache – Произвольный доступ к строкам текста¶linecache – Random access to text lines
Исходный код: Lib/linecache.py
Модуль linecache позволяет получить произвольную строку из исходного файла Python, внутренне оптимизируя с помощью кэша часто встречающийся случай чтения множества строк из одного файла. Он используется модулем traceback для получения строк исходного кода для включения в форматированный 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'