0
텍스트 파일의 정의되지 않은 이름을 가진 디렉토리가 있다고 가정 해 보겠습니다. 그래서 각 세트에 얼마나 많은 단어가 들어 있는지 확인하고 싶습니다. 이 파일들은 거대한 크기를 가질 수 있기 때문에 파이썬에서 가장 효율적인 방법이 무엇인지 궁금합니다. 메모리에서 파일을 처리하는 가장 좋은 방법 Python
for file in files:
with open(file) as f:
content = f.readlines()
for word in words:
if word in content:
count+=1
내 질문
은 다음과 같습니다 :- 가 어떻게 메모리에 큰 파일을 처리해야이 고전적인 접근 방식은 이상적인 하나 보이지 않는다?
- 이 복잡도는 O (n * m)이고 n = # 파일이고 m = # 단어인데이를 줄일 수 있습니까? 아니면 저를 도울 수있는 데이터 구조가 있습니까?
네, 메모리 복잡성에 관해서는 맞지만 readline을 사용하면 많은 양의 읽기가 생성 될 것입니다. 그저 단순한 라인 이상을 저장할 수있는 버퍼를 사용하면 더 좋을 것입니다 (또는 readline 자체만으로도 가능합니다). 하지만 시간에 관해 당신이 말하고자하는 것을 따르지 않고 있습니다 .. – m33n
Readlines()가 readline()을 반복적으로 호출하므로 동등합니다. 그것은리스트 이해력과 생성자 표현의 차이와 비슷합니다. 최종 결과는 동일하지만 모든 것을 하나씩 또는 단편적으로 수행합니다. Time-dicts를 사용하면 이미 증가한 단어를 찾기 위해 이미 계산 한 단어 목록을 반복하지 않아도됩니다. 그것은 해시 맵입니다. – jkm