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.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'