linecache ---随机访问文本行

源代码: Lib/linecache.py


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

这个 tokenize.open() 函数用于打开文件。此函数使用 tokenize.detect_encoding() 获取文件的编码;如果没有编码标记,则文件编码默认为UTF-8。

这个 linecache 模块定义以下功能:

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

得到线 林诺 从文件命名 filename . 此函数永远不会引发异常---它将返回 '' 出错时(找到的行将包含终止换行符)。

如果文件名为 filename 找不到,函数首先检查 PEP 302 __loader__ 在里面 module_globals . 如果存在这样的加载程序,并且它定义了 get_source 方法,然后确定源行(如果 get_source() 返回 None 然后 '' 返回)。最后,如果 filename 是相对文件名,它是相对于模块搜索路径中的条目查找的, 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'