Python 3.5+linecacheфункция
linecache.lazycache()
чтение строк
Регистрирует в кэше способ получить исходник модуля, которого нет на диске (zip, замороженный), не читая его сразу.
Синтаксис
linecache.lazycache(filename, module_globals)
Обычный getline ищет файл на диске и для модуля из zip-архива вернёт '', если не передан module_globals. lazycache запоминает загрузчик из глобальных имён модуля, и дальнейшие getline по этому имени работают без module_globals. Функция возвращает False для имён вида '<stdin>' и когда у модуля нет загрузчика с get_source.
Примеры
import linecache, sys, zipfile
with zipfile.ZipFile('lib.zip', 'w') as z:
z.writestr('zmod.py', 'def f():\n return 42\n')
sys.path.insert(0, 'lib.zip')
import zmod
print(repr(linecache.getline(zmod.__file__, 1))) # → ''
print(linecache.lazycache(zmod.__file__, vars(zmod))) # → True
print(repr(linecache.getline(zmod.__file__, 1))) # → 'def f():\n'
print(linecache.lazycache('<stdin>', {})) # → False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности