# `linecache` — 텍스트 줄에 대한 무작위 액세스

소스 코드: Lib/linecache.py

`linecache` 모듈은 파이썬 소스 파일에서 임의의 줄을 가져올 수 있도록 하는데, 캐시를 사용하여 단일 파일에서 여러 줄을 읽는 일반적인 상황을 내부적으로 최적화하려고 시도합니다. 이것은 `traceback` 모듈에서 포맷된 트레이스백에 포함할 소스 줄을 가져오는 데 사용됩니다.

`tokenize.open()` 함수가 파일을 여는 데 사용됩니다. 이 함수는 `tokenize.detect_encoding()`를 사용하여 파일의 인코딩을 가져옵니다; 인코딩 토큰이 없으면, 파일 인코딩의 기본값은 UTF-8입니다.

`linecache` 모듈은 다음 함수를 정의합니다:

`linecache.``getline`(filename, lineno, module_globals=None)

  filename 파일에서 lineno 줄을 가져옵니다. 이 함수는 절대 예외를 발생시키지 않을 것입니다 — 에러 시 `''`를 반환합니다 (발견된 줄의 줄 바꿈 문자는 포함됩니다).

  filename이라는 파일이 없으면, 이 함수는 먼저 module_globals에서 PEP 302 `__loader__`를 먼저 확인한 후(zip 파일이나 기타 파일 시스템 이외의 임포트 소스에서 모듈이 임포트 됩니다) 모듈 검색 경로, `sys.path`, 에서 파일을 찾습니다.

`linecache.``clearcache`()

  캐시를 지웁니다. 이전에 `getline()`를 사용하여 읽은 파일의 줄이 더는 필요하지 않으면 이 함수를 사용하십시오.

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