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* 的文件,该函数首先会在 *module_globals* 中检查 PEP 302
__loader__
。如果存在这样的加载器并且它定义了get_source
方法,则该方法确定源代码行(如果get_source()
返回None
,则返回''
)。最后,如果 *filename* 是相对文件名,则相对于模块搜索路径sys.path
中的条目查找它。
- linecache.checkcache(filename=None)¶
检查缓存的有效性。如果缓存中的文件可能已在磁盘上更改,并且您需要更新的版本,请使用此函数。如果省略 *filename*,它将检查缓存中的所有条目。
- linecache.lazycache(filename, module_globals)¶
捕获有关非基于文件的模块的足够详细信息,以便即使在以后调用时 *module_globals* 为
None
,也可以通过getline()
获取其行。这避免了在实际需要某一行之前进行 I/O,而无需无限期地携带模块全局变量。3.5 版新增。
示例
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'