11.9. linecache - 随机存取文字行

源代码: Lib / linecache.py

linecache模块允许从Python源文件获取任何行,同时尝试使用高速缓存在内部进行优化,这是从单个文件读取多行的常见情况。这由traceback模块使用,以检索包含在格式化回迹中的源行。

tokenize.open()函数用于打开文件。此函数使用tokenize.detect_encoding()获取文件的编码;在没有编码令牌的情况下,文件编码默认为UTF-8。

linecache模块定义了以下函数:

linecache.getline(filename, lineno, module_globals=None)

从名为filename的文件中获取行lineno这个函数永远不会引发异常 - 它会在错误时返回''(对于找到的行,将包含终止换行符)。

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()

清除缓存。如果您不再需要使用getline()读取的文件中的行,请使用此函数。

linecache.checkcache(filename=None)

检查缓存的有效性。如果缓存中的文件可能在磁盘上更改,并且需要更新版本,请使用此函数。如果省略filename,它将检查缓存中的所有条目。

linecache.lazycache(filename, module_globals)

捕获有关非基于文件的模块的足够详细信息,以允许稍后通过getline()获取其行,即使module_globals在后面的调用中为None。这避免了做I / O直到实际需要一行,而不必无限地携带模块全局变量。

版本3.5中的新功能。

例:

>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'