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 的文件未找到,该函数将在模块搜索路径
sys.path
中查找它,在此之前会先在 module_globals 中检查 PEP 302__loader__
,以涵盖模块是从 zip 文件或其他非文件系统导入源导入的情况。
-
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'