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.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'