linecache
— Random access to text lines¶Source code: Lib/linecache.py
The linecache
module allows one to get any line from a Python source file, while
attempting to optimize internally, using a cache, the common case where many
lines are read from a single file. This is used by the traceback
module
to retrieve source lines for inclusion in the formatted traceback.
The tokenize.open()
function is used to open files. This
function uses tokenize.detect_encoding()
to get the encoding of the
file; in the absence of an encoding token, the file encoding defaults to UTF-8.
The linecache
module defines the following functions:
linecache.
getline
(filename, lineno, module_globals=None)¶Get line lineno from file named filename. This function will never raise an
exception — it will return ''
on errors (the terminating newline character
will be included for lines that are found).
If a file named filename is not found, the function will look for it in the
module search path, sys.path
, after first checking for a PEP 302
__loader__
in module_globals, in case the module was imported from a
zipfile or other non-filesystem import source.
linecache.
clearcache
()¶Clear the cache. Use this function if you no longer need lines from files
previously read using getline()
.
linecache.
checkcache
(filename=None)¶Check the cache for validity. Use this function if files in the cache may have changed on disk, and you require the updated version. If filename is omitted, it will check all the entries in the cache.
linecache.
lazycache
(filename, module_globals)¶Capture enough detail about a non-file-based module to permit getting its
lines later via getline()
even if module_globals is None
in the later
call. This avoids doing I/O until a line is actually needed, without having
to carry the module globals around indefinitely.
New in version 3.5.
Example:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'