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

Python에서 LINECACHE를 사용하여 텍스트 파일을 읽는 방법

<시간/>

해결책..

linecache 모듈은 메모리에서 별도의 줄로 구문 분석된 파일 내용을 보유하는 캐시를 구현합니다. linecache 모듈은 목록을 인덱싱하여 줄을 반환하고 파일을 반복적으로 읽고 원하는 줄을 찾기 위해 줄을 구문 분석하는 데 드는 시간을 절약합니다.

lincecache 모듈은 같은 파일에서 여러 줄을 찾을 때 매우 유용합니다.

테스트 데이터를 준비합니다. 이 텍스트는 Google을 사용하여 샘플 텍스트를 검색하면 얻을 수 있습니다.

솔직히 말해서 매우 현명하고 그 이유는 정확하며 이 두 가지가 웹사이트를 사용하면 도움이 될 것입니다. 에피쿠로스가 두 가지를 발견하기 위해 그는 이 새로운 안경을 비웃습니다. 그는 더 나은 바다에서 태어나고 싶지 않았습니다. 그에게 설명할 수 있도록 두십시오. 아니요, 그것은 제가 바다에 가는 것을 단념한 적이 없습니다. 그것은 이 웹사이트에 있었고 실제로 있었습니다. 내가 그에게 문제를 해결해 주면 반대편에 있는 위험을 이해할 것입니다.

그는 우아한 방식으로 그렇게 했습니다. 쉽게 벗겨질 염려가 없고, RVing 미녀가 될 것입니다. 그것은 메난데르의 노력이었을 것이므로, 그것은 야성적인 십대들로부터, 또는 다른 논쟁에서 나온 것처럼 보일 것이다. zril의 두 가지 감각, 내가 볼 수 있다면 어떤 힘에도 동의합니다.

포시돈을 작성할 때마다 그것에 동의하지 말고 세상에서 확인하십시오. 데모크리토스는 일반적으로 폭력으로 당신의 기분을 상하게 합니다. 그것이 뒷마당에서 작동해야하는지 여부와 귀하가 동의하지 않거나 고려하는 모든 것에 대해. 하지만 글을 읽고 싶다면, 주류 후보들의 바다를 비판하고, 꿀에 무방비 철학을 두지 마십시오. 우리의 정책을 사용해서는 안 됩니다.

또한 도시성이 마음에 떠오르지 않았기 때문에 제 생각에는 한 달에 한 번도 없었습니다. 그 두 사람은 결코 그를 도울 수 없었습니다. 당신이 나무에 의해 옮겨지고 있다는 소식을 듣는 것은 당신에게 달려 있습니다. 내가 멋있어야만 하는 것이 아니라 정확한 테스트가 가능합니다. 제 질문을 하겠습니다.

그러나 어떤 힘을 가하든 양립할 수 없습니다. 그리스인에 대한 그녀의 목표를 달성하기 위해. 비슷한 것을 두려워하고 있다면 언젠가는 세상에 맞는 것입니다. 내 글은 EU에 대한 나의 첫 번째 이야기부터 섬세한 법정 폭력의 과잉에 이르기까지 최소한이 아닙니다. 그리고 그 말의 의미는 무엇입니까?

import os
import tempfile

text = """
Lorem ipsum dolor sit amet, causae apeirian ea his, duo cu congue prodesset. Ut epicuri invenire duo, novum ridens eu has, in natum meliore noluisse sea. Has ei stet explicari. No nam eirmod deterruisset, nusquam electram rationibus ad sea, interesset delicatissimi et sit. Purto molestiae cu eum, in per hinc periculis intellegam.

Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

Te nam tempor posidonium scripserit, eam mundi reprimique dissentias ne. Vim te soleat offendit democritum. Nam an diam elaboraret, quaeque dissentias an has. Autem legendos dignissim ad vis, sea ex amet petentium reprehendunt, inermis constituam philosophia ne mel. Esse noster lobortis usu ne.

Nec reque postea urbanitas ut, mea in nulla invidunt ocurreret. Ei duo iuvaret numquam. Ferri nemore audire te est, mel et detracto noluisse. Nec eu habeo justo, id pro posse apeirian volutpat. Mea sonet quaestio ne.

Atqui quaeque alienum te vim. Graeco aliquip liberavisse pro ut. Te similique reformidans usu, te mundi aliquando ius. Meis scripta minimum quo no, meis prima fabellas eu eam, laoreet delicata forensibus ut vim. Et quo vocibus mediocritatem, atqui summo an eam.

"""

1. 임시 파일을 생성하고 사용 후 삭제하는 Function을 생성합니다.

def make_tempfile():
"""
Function: Create a temporary file.
mkstemp() and mkdtemp() to create temporary files and directories

args: None

return: Temp file name.
"""
fd, temp_file = tempfile.mkstemp()
os.close(fd)

with open(temp_file, 'wt') as f:
f.write(text)

return temp_file

def cleanup(temp_file):
os.unlink(temp_file)

3. linecache를 사용하여 특정 줄을 읽습니다. linecache 모듈이 읽는 파일의 줄 번호는 0부터 배열 색인을 시작하는 목록과 달리 1부터 시작합니다. 이것은 기억해야 할 중요한 사항입니다.

import os
import tempfile
import linecache

text = """
Lorem ipsum dolor sit amet, causae apeirian ea his, duo cu congue prodesset. Ut epicuri invenire duo, novum ridens eu has, in natum meliore noluisse sea. Has ei stet explicari. No nam eirmod deterruisset, nusquam electram rationibus ad sea, interesset delicatissimi et sit. Purto molestiae cu eum, in per hinc periculis intellegam.

Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

Te nam tempor posidonium scripserit, eam mundi reprimique dissentias ne. Vim te soleat offendit democritum. Nam an diam elaboraret, quaeque dissentias an has. Autem legendos dignissim ad vis, sea ex amet petentium reprehendunt, inermis constituam philosophia ne mel. Esse noster lobortis usu ne.

Nec reque postea urbanitas ut, mea in nulla invidunt ocurreret. Ei duo iuvaret numquam. Ferri nemore audire te est, mel et detracto noluisse. Nec eu habeo justo, id pro posse apeirian volutpat. Mea sonet quaestio ne.

Atqui quaeque alienum te vim. Graeco aliquip liberavisse pro ut. Te similique reformidans usu, te mundi aliquando ius. Meis scripta minimum quo no, meis prima fabellas eu eam, laoreet delicata forensibus ut vim. Et quo vocibus mediocritatem, atqui summo an eam.
"""

def make_tempfile():
"""
Function: Create a temporary file.
mkstemp() and mkdtemp() to create temporary files and directories

args: None

return: Temp file name.
"""
directory = os.getcwd()
fd, temp_file = tempfile.mkstemp(dir=directory)
os.close(fd)

with open(temp_file, 'wt') as f:
f.write(text)

return temp_file

def cleanup(temp_file):
os.unlink(temp_file)

# Make a file with ipsum data.
filename = make_tempfile()
print(f"Output \n {filename}")

split_line = '\n'

# Pick the lines from source.

print(f"*** Displaying first 5 lines directly from the source \n {text.split(split_line)[4]}" )

# pick out the same line from cache
print(f" \n *** Displaying first 5 lines from the cache \n {linecache.getline(filename, 5)}" )

# cleanup the tempfile by using unlink
cleanup(filename)

출력

C:\Users\sasan\PycharmProjects\blog\TutorialPoints\Updated_Code\tmpazax_yne
*** Displaying first 5 lines directly from the source
Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

*** Displaying first 5 lines from the cache
Id porro facete cum. No est veritus detraxit facilisis, sit ea clita decore essent. Ut eam labores fuisset menandri, ex sit brute viderer eleifend, altera argumentum vel ex. Duo at zril sensibus, eu vim ullum assentior, quando possit at his.

4.Linecache는 항상 줄 끝에 개행을 포함합니다. 따라서 행이 비어 있으면 반환 값은 개행일 뿐입니다.

아래를 참조하십시오.

import linecache

# Make a file with ipsum data.
filename = make_tempfile()
print(f"Output \n {filename}")

# Blank lines include the newline.

print(f"\n *** The number of lines in the text is 13." )
print(" \n *** Displaying the lastline from Linecache which should be a new line\n {!r}".format(linecache.getline(filename, 8)) )

cleanup(filename)

출력

C:\Users\sasan\PycharmProjects\blog\TutorialPoints\Updated_Code\tmp352zirvn

*** The number of lines in the text is 13.

*** Displaying the lastline from Linecache which should be a new line
'\n'

5.결론 - 응용 프로그램에서 파일에 대한 임의 액세스가 필요할 때 linecache를 사용하면 줄 번호로 줄을 쉽게 읽을 수 있습니다. 파일의 내용은 캐시에 보관되므로 메모리 소모에 주의하세요.