linecache —随机访问文本行

源代码: Lib/linecache.py


linecache模块允许一个人从 Python 源文件中获取任何行,同时try使用缓存对内部进行优化,这是从单个文件读取多行的常见情况。 traceback模块使用它来检索源行以包含在格式化的 traceback 中。

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

linecache模块定义以下Function:

  • linecache. getline(* filename lineno module_globals = None *)
    • 从名为* filename 的文件获取 lineno *行。此函数绝不会引发异常-它将在错误时返回''(找到的行将包含终止的换行符)。

如果找不到名为* filename 的文件,则该函数首先在 module_globals 中检查 PEP 302 __loader__。如果有这样的加载器,并且它定义了get_source方法,则该方法确定源代码行(如果get_source()返回None,则返回'')。最后,如果 filename *是相对文件名,则相对于模块搜索路径sys.path中的条目进行查找。

  • linecache. clearcache ( )

    • 清除缓存。如果您不再需要以前使用getline()读取的文件中的行,请使用此Function。
  • linecache. checkcache(* filename = None *)

    • 检查缓存的有效性。如果缓存中的文件可能已在磁盘上更改,并且您需要更新的版本,请使用此Function。如果Ellipsis* filename *,它将检查缓存中的所有条目。
  • linecache. lazycache(* filename module_globals *)

    • 捕获有关非基于文件的模块的足够详细信息,以允许以后passgetline()获取其行,即使在以后的调用中* module_globals *为None时也是如此。这样可以避免在实际需要一条线之前进行 I/O 操作,而不必无限期地携带模块全局变量。

3.5 版中的新Function。

Example:

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