linecache — 텍스트 줄에 대한 임의 접근
linecache — 텍스트 줄에 대한 임의 접근
linecache 모듈은 파이썬 소스 파일에서 아무 줄이나 가져올 수 있게 해주며, 내부적으로 캐시를 사용해 단일 파일에서 많은 줄을 읽는 일반적인 경우를 최적화해요. traceback 모듈이 형식화된 트레이스백에 포함할 소스 줄을 가져오는 데 사용돼요.
파일을 여는 데는 tokenize.open() 함수가 사용돼요. 이 함수는 tokenize.detect_encoding()을 사용해 파일의 인코딩을 알아내며, 인코딩 토큰이 없으면 파일 인코딩은 기본적으로 UTF-8이 돼요.
본문
함수
linecache.getline(filename, lineno, module_globals=None) — 이름이 filename인 파일에서 줄 lineno를 가져와요. 이 함수는 예외를 절대 발생시키지 않아요. 오류가 나면 ''를 반환해요(찾은 줄에는 종료 줄 바꿈 문자가 포함됨). filename이 동결된 모듈('<frozen '로 시작)을 나타내면 module_globals가 None이 아닐 때 module_globals['__file__']에서 실제 파일 이름을 가져오려고 시도해요.
이름 filename의 파일을 찾지 못하면 module_globals에서 PEP 302 __loader__를 먼저 확인해요. 그런 로더가 있고 get_source 메서드를 정의한다면 그 메서드가 소스 줄을 결정해요(get_source()가 None을 반환하면 ''가 반환됨). 마지막으로 filename이 상대 파일명이면 모듈 검색 경로 sys.path의 항목에 대해 상대적으로 조회해요.
버전 3.14에서 변경: 동결된 모듈의 filename 지원.
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'