linecache
--- 隨機(jī)讀寫文本行?
源代碼: Lib/linecache.py
linecache
模塊允許從一個 Python 源文件中獲取任意的行,并會嘗試使用緩存進(jìn)行內(nèi)部優(yōu)化,常應(yīng)用于從單個文件讀取多行的場合。 此模塊被 traceback
模塊用來提取源碼行以便包含在格式化的回溯中。
tokenize.open()
函數(shù)被用于打開文件。 此函數(shù)使用 tokenize.detect_encoding()
來獲取文件的編碼格式;如果未指明編碼格式,則默認(rèn)編碼為 UTF-8。
linecache
模塊定義了下列函數(shù):
- linecache.getline(filename, lineno, module_globals=None)?
從名為 filename 的文件中獲取 lineno 行,此函數(shù)絕不會引發(fā)異常 --- 出現(xiàn)錯誤時它將返回
''
(所有找到的行都將包含換行符作為結(jié)束)。如果找不到名為 filename 的文件,此函數(shù)會先在 module_globals 中檢查 PEP 302
__loader__
。 如果存在這樣的加載器并且它定義了get_source
方法,則由該方法來確定源行 (如果get_source()
返回None
,則該函數(shù)返回''
)。 最后,如果 filename 是一個相對路徑文件名,則它會在模塊搜索路徑sys.path
中按條目的相對位置進(jìn)行查找。
- linecache.checkcache(filename=None)?
檢查緩存有效性。 如果緩存中的文件在磁盤上發(fā)生了改變,而你需要更新后的版本即可使用此函數(shù)。 如果省略了 filename,它會檢查緩存中的所有條目。
- linecache.lazycache(filename, module_globals)?
捕獲有關(guān)某個非基于文件的模塊的足夠細(xì)節(jié)信息,以允許稍后再通過
getline()
來獲取其中的行,即使當(dāng)稍后調(diào)用時 module_globals 為None
。 這可以避免在實際需要讀取行之前執(zhí)行 I/O,也不必始終保持模塊全局變量。3.5 新版功能.
示例:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'