파이썬 :
수백만 개의 레코드에있는 큰 크기의 텍스트 파일에서 찾고있는 특정 단어가 있습니다.
그래서 실제로 파일에서 특정 문자열을 사용할 수 있는지 검색하고 싶었습니다.
내가 한 한 가지 방법은 다음과 같습니다.
with open('ip.log', 'r') as f:
for line in f:
if semething in line:
break
else:
print 'Not found'
그러나 작은 파일의 경우이 프로세스는 문제가 없지만 파일 크기가 증가하거나 레코드가 수천만 개로 증가 할 때 큰 파일을 메모리에로드하는 것은 실행 가능한 솔루션이 아닐 수 있습니다.
이 문제를 처리하는 더 좋은 방법이 있습니까?
관찰 :
여러분의 걱정은 근거가 없습니다. 여러분의 코드는 전체 파일을 메모리에로드하지 않습니다. 시도해보세요! 그리고 break
루프에서 검색 한 단어를 찾으면 파일 읽기가 중지되므로 걱정할 필요가 없습니다.
코드에서는 -loop f
와 함께 사용할 때 한 번에 한 줄을 읽는 파일 객체입니다 for
. 당신이 쓴 경우 f.readlines()
또는 f.read()
, 다음 당신은 전체 파일을 읽는 것입니다.
유일한 잠재적 인 문제는 파일에 줄 바꿈이 포함되지 않는 경우입니다 (예 : 바이너리 파일이거나 줄 바꿈이 아닌 공백으로 구분 된 막대한 단어 목록). 이 경우, 다음과 같은 문자 블록을 읽어야합니다 f.read(10000)
(그리고 블록에서 단어가 분리되는 것을 처리). 사용 사례에 일반 텍스트 파일이 포함되어 있으므로 걱정할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다