2017-05-23 2 views
1

매우 큰 .csv 파일로 작업하고 있으며 json 등으로 파싱하는 것 외에도 파일의 행 수를 찾으려고합니다.파이썬을 사용하여 큰 .csv 파일의 행 수 찾기

내 질문에 지속적으로 다음과 같은 오류가 발생하기 때문에 어떻게 CSV 라이브러리의 한계를 극복 할 수 있습니다.

필자는 csv 파일의 행 수를 반환하는 Python3에서 작동하는 것으로 알고있는 샘플 프로그램을 제공하고 있습니다.

import csv 

    input = 'large-input.csv' 
    with open(input ,"r") as f: 
     reader = csv.reader(f,delimiter = ",") 
     data = list(reader) 
     row_count = len(data) 
     print(row_count) 

그러나 1.5GB csv 파일에 대해 실행할 때이 오류가 계속 발생합니다.

Traceback (most recent call last): 
    File "csv-len.py", line 6, in <module> 
    data = list(reader) 
_csv.Error: field larger than field limit (131072) 

이 문제는 크게 만족 스럽습니다. 감사!

+0

@OluwafemiSule이 질문은 다릅니다. CSV를 발전기로 읽는 것은 도움이되지 않습니다. 길이를 얻으려면 발전기를 다 써야합니다. –

답변

0

CSV는 일반적으로 줄 바꿈 문자로 구분되어 CSV 파서를 통해 줄 수를 계산하기 만하면 줄 수를 계산하는 것보다 비효율적 일 수 있습니다.

이와 같은 것이 훨씬 더 빠를 것입니다. 필요한 경우 머리말에 대한 행을 뺄 수 있습니다.

def row_count(input): 
    with open(input) as f: 
     for i, l in enumerate(f): 
      pass 
    return i 
관련 문제