python3從零學習-5.4.9、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 中查找它,在此之前會先在 module_globals 中檢查 PEP 302 __loader__,以涵蓋模塊是從 zip 文件或其他非文件系統導入源導入的情況。
  • linecache.clearcache()

              清空緩存。 如果你不再需要之前使用 getline() 從文件讀取的行即可使用此函數。
  • 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'
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章