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中搜索它。如果模块是从zipfile或其他非文件系统导入源导入的,首先检查module_globals中的PEP 302_loader_。
linecache. clearcache()
清除高速缓冲。如果你不在需要使用getline()去读取来自于文件的行,使用该函数。
linecache. checkcache(filename=None)
检查高速缓冲的有效性。如果高速缓冲中的文件需要在硬盘上修改或者你请求更新版本,使用该函数即可。如果filename被省略,它会检查高速缓冲的所有入口。
linecache. lazycache(filename, module_globals)
捕获关于非文件依赖的模块的足够细节去允许获取它的行,之后可经由getline()实现,甚至在稍后的调用中module_glovals都可以为None。这种操作可以避免I/O操作的滥用,除非你真的需要该行才会进行,不必无限地携带模块全局。