500MB를 초과하는 대용량 로그 파일을 생성하는 응용 프로그램이 있습니다.파이썬에서 UTF-8로 인코딩 된 문서를 찾아보고 말할 수 있습니까?
필자는 파이썬에서 로그 파일을 빠르게 찾아보고 관심있는 데이터를 찾을 수있는 몇 가지 유틸리티를 작성했습니다. 그러나 이제는 파일이 너무 커서 전체를 메모리에로드 할 수없는 일부 데이터 세트를 얻습니다.
그래서 나는 문서를 한 번 스캔하고 색인을 작성한 다음 문서의 섹션을 한 번에보고 싶은 메모리에로드하려고합니다.
이 파일은 한 번에 한 줄씩 읽고 파일을 열 때 file.tell()에서 오프셋을 저장할 때 유용합니다. 그런 다음 나중에 file.seek (offset, 0)을 사용하여 파일의 해당 섹션으로 돌아갈 수 있습니다.
그러나 내 문제는 로그 파일에 UTF-8이있어 코덱 모듈 (codecs.open(<filename>, 'r', 'utf-8')
)을 열어야한다는 것입니다. 결과 객체를 사용하여 찾기와 말하기를 호출 할 수 있지만 일치하지 않습니다.
나는 코덱이 약간의 버퍼링을 필요로한다고 가정하고 말하자면 바이트 수 대신 문자 수를 반환한다고 가정합니까?
이 방법이 있습니까?
엄밀히 말하면 UTF-8에는 가능한 한 바이트 순서 만 있으므로 바이트 순서 표시에는 사용되지 않으므로 UTF-8에 대해서는 바이트 순서 표시가 유효하지 않습니다. 그럼에도 불구하고 일부 UTF-8 인코더는 바이트 순서 표시를 잘못 앞에 붙이고 일부 UTF-8 디코더는 바이트 순서 표시로 인코딩 된 입력을 허용합니다. – yfeldblum
UTF-8에 바이트 순서가 없다는 것은 사실입니다. 그러나 바이트 순서 표시는 파일이 UTF-8로 인코딩되었음을 나타 내기 위해 종종 사용됩니다. 나는이 사용법을 "부정확"이라고 부르지 않을 것이다. – intgr