linecache
--- 隨機存取文字列¶
原始碼:Lib/linecache.py
linecache
模組允許從 Python 原始碼檔案中取得任何一行。當嘗試在程式內部進行最佳化,會使用快取,這是從單一檔案讀取許多行的常見情況。 這被 traceback
模組用來擷取來自原始碼檔案的行,以包含在格式化的 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)¶
即使 module_globals 在稍後的呼叫中是
None
,也可以擷取非檔案型模組的足夠細節,以允許稍後透過getline()
取得其行。這可以避免在真正需要某一行之前進行 I/O 操作,而不必無限期地帶著模組的全域變數。在 3.5 版被加入.
範例:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'