11.9. 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 не найден, функция будет искать его в пути поиска модулей sys.path, предварительно проверив наличие PEP 302 __loader__ в module_globals, на случай, если модуль был импортирован из zip-файла или другого источника, не являющегося файловой системой.
- linecache.clearcache()¶
Очищает кеш. Используйте эту функцию, если строки из файлов, ранее прочитанные с помощью getline(), больше не нужны.
- linecache.checkcache(filename=None)¶
Проверяет кэш на валидность. Используйте эту функцию, если файлы в кэше могли измениться на диске и требуется обновленная версия. Если filename опущен, проверяются все записи в кэше.
Пример:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'