2011-04-05 3 views
1

파일을 통해 정규식 일치를 실행해야하지만 예기치 않은 문제가 발생합니다. 파일이 read() 또는 mmap()에 너무 커서 한 번 호출하면 File 개체가 buffer() 인터페이스를 지원하지 않으며 regex 모듈 문자열이나 버퍼 만 사용합니다.큰 파일에 파이썬 : 정규식. 쉬운 방법?

쉬운 방법이 있나요?

+0

파일의 크기는 어느 정도입니까? –

+1

정규식이 여러 줄과 일치해야합니까, 아니면 grep과 동일한 작업을 수행 할 수 있습니까? – geoffspear

+0

Big. 여러 행을 일치시켜야합니다. 나는 지금 다른 접근법을 취하고있다. (삶이나 죽음의 상황이 아니다.) 그러나 나는 이것을하기위한 더 간단한 방법이 없는가 궁금했다. – slezica

답변

5

파이썬 mmap 모듈은 파이썬 친화적 인 메모리 매핑 방식을 제공합니다. 32 비트 운영 체제에서 파일의 최대 크기는 1GB 또는 2GB로 제한되지만 64 비트 OS에서는 임의의 크기의 파일을 메모리 맵핑 할 수 있습니다 (저장까지 크기는 물론 2 을 초과합니다.

파이썬에서 최대 30GB의 파일 (위키피디아 XML 덤프 파일)로이 작업을 수행했습니다.