Skip to main content

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。这个函数永远不会引发异常—它会在错误时返回 '' (对于找到的行,将包含终止换行符)。

如果未找到名为 filename 的文件,则在模块从zip文件或其他非文件系统导入源导入的情况下,首先在 module_globals 中检查 PEP 302 __loader__ 之后,该函数将在模块搜索路径 sys.path 中查找该文件。

linecache.clearcache()

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

linecache.checkcache(filename=None)

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

linecache.lazycache(filename, module_globals)

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

3.5 新版功能.

例:

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