Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python(linecache)의 텍스트 줄에 대한 임의 액세스

<시간/>

Python의 표준 라이브러리에 있는 linecache 모듈의 목적은 모든 텍스트 파일에 대한 임의 액세스를 용이하게 하는 것이지만 이 모듈은 Python의 traceback 모듈에서 오류 추적 스택을 생성하는 데 광범위하게 사용됩니다. 읽기의 또 다른 예쁜 프린트는 캐시에 보관되어 줄을 반복해서 읽는 동안 시간을 ​​절약합니다.

이 모듈에서 가장 중요한 함수는 주어진 파일에서 지정된 줄 번호를 읽는 getline()입니다. 다음은 기능 목록입니다 -

getline(파일, x)

이 함수는 파일에서 x번째 줄을 반환합니다. 존재하지 않으면 빈 문자열을 반환합니다. 파일이 현재 경로에 없으면 함수는 모듈 검색 경로인 sys.path의 디렉터리에서 파일을 찾습니다.

clearcache()

이전 getline() 함수의 prettyprint가 더 이상 필요하지 않은 경우 이 함수로 캐시를 지울 수 있습니다.

체크캐시()

이 함수는 캐시가 유효한지 확인합니다. 이것은 캐시의 파일이 디스크에서 변경된 경우에 유용합니다.

지연 캐시()

module_globals를 사용하여 파일 이름에 대한 캐시를 시드합니다. 모듈 로더는 즉시가 아니라 getlines가 호출될 때만 소스를 요청합니다.

getlines()

이 함수는 목록 객체의 형태로 파일에서 줄을 반환합니다.

업데이트 캐시()

이 함수는 캐시 항목을 업데이트하고 행 목록을 반환합니다.

linecache 기능의 사용을 보여주기 위해 먼저 유명한 Zen of Python(Python의 디자인 철학에 영향을 미치는 소프트웨어 원칙 목록)을 저장할 텍스트 파일을 만듭니다. 'import this'의 출력은 다음 코드에 의해 zen.txt로 리디렉션됩니다 -

import sys, io
zen = io.StringIO()
old_stdout = sys.stdout
sys.stdout = zen
import this
sys.stdout = old_stdout
f=open('zen.txt','w')
f.write(zen.getvalue())
f.close()

위의 코드를 실행하면 현재 디렉토리에 zen.txt가 생성됩니다. 이 텍스트 파일을 사용하여 getline() 함수로 줄을 읽을 것입니다.

파일에서 4번째 줄을 읽으려면

>>> linecache.getline('zen.txt',4)
'Explicit is better than implicit.\n'

반환 문자열은 개행 문자로 끝납니다.

4에서 10까지의 줄 번호를 표시하려면 getlines() 함수에서 반환된 목록에 슬라이스 연산자를 사용하십시오.

>>> linecache.getlines('zen.txt')[4:10]
['Simple is better than complex.\n', 'Complex is better than complicated.\n', 'Flat is better than nested.\n', 'Sparse is better than dense.\n', 'Readability counts.\n', "Special cases aren't special enough to break the rules.\n"]

이 기사에서는 Python 표준 라이브러리의 linecache 모듈에 대해 배웠습니다.