1. 程式人生 > >Python基礎學習:linecache模組

Python基礎學習:linecache模組

                            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操作的濫用,除非你真的需要該行才會進行,不必無限地攜帶模組全域性。