linecache — Random access to text lines¶
Вихідний код: 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)¶
Перевірте кеш на дійсність. Використовуйте цю функцію, якщо файли в кеші могли змінитися на диску, і вам потрібна оновлена версія. Якщо ім’я файлу опущено, буде перевірено всі записи в кеші.
- linecache.lazycache(filename, module_globals)¶
Зберіть достатньо деталей про нефайловий модуль, щоб дозволити отримати його рядки пізніше через
getline(), навіть якщо module_globals має значенняNoneу наступному виклику. Це дозволяє уникнути введення/виведення, доки рядок дійсно не знадобиться, без необхідності носити глобальні модулі безкінечно.Added in version 3.5.
Приклад:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'