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)¶
捕獲有關基於非檔案的模組的足夠詳細資訊,以便以後可以透過
getline()
獲取其行,即使在以後的呼叫中 module_globals 為None
。這避免了在實際需要行之前進行 I/O,而無需無限期地保留模組全域性變數。在 3.5 版本中新增。
示例
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'