2012-02-08 2 views
1

가능한 중복 :
Python: How to read huge text file into memory라인 기반 파일 읽기 용 파이썬 라이브러리가 있습니까?

큰 텍스트 파일 (1G +) 라인으로 라인을 처리하려면, 어떤 줄 번호에 의해 랜덤 액세스는 전체 파일을로드하지 않고, 가장 중요하게 요구되는 콘텐츠를 RAM에 저장합니다. 거기에 파이썬 라이브러리가 있나요?

큰 로그 파일을 분석 할 때 유익합니다. 읽기 전용이면 충분합니다.

표준 라이브러리가 없다면 다른 방법을 찾아야합니다. 큰 문자열과 같은 객체에서 N 번째 줄의 하위 문자열을 반환 할 수있는 함수/클래스 집합을 찾아서 수 mmap (예, 나는 메모리 매핑 된 파일 개체를 의미합니다) 그 개체에 파일을 누른 다음 라인 기반 처리를 수행합니다.

감사합니다.

PS : 로그 파일의 길이는 가변적 인 것이 거의 확실합니다.

+0

는 같은 길이의 모든 라인이 있습니까 할 수 있을까? –

+2

파일을 사전 처리하여 정렬 색인을 만들 수 있습니까? – anijhaw

답변

1

I는 다음과 같은이 file object의 방법 readline() 한 번에 한 줄을 읽어 때문에, 작동 할 수 있습니다 그 생각 . 선이 임의 길이 인 경우 다음과 같이 위치를 인덱싱해야합니다. 선이 동일한 길이 인 경우

lines = [0] 
with open("testmat.txt") as f: 
    while f.readline(): 
     lines.append(f.tell()) 
    # now you can read an arbitrary line: 
    f.seek(lines[1235]) 
    line = f.readline() 

, 당신은 단지 f.seek(linenumber*linelenght)

+1

@anijhaw가 언급 한 "정렬 색인"과 같습니다. –

+0

@JimDeLaHunt - 네, 맞습니다. – Kimvais

관련 문제