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_globalsNone이더라도 getline()을 통해 나중에 해당 줄을 가져올 수 있도록, 파일 기반이 아닌 모듈에 대한 충분한 정보를 캡처합니다. 이렇게 하면 라인이 실제로 필요할 때까지 모듈 전역을 무기한으로 들고 있지 않고도 I/O를 회피합니다.

버전 3.5에 추가.

예제:

>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'