使用python查找大型.csv文件中的行数

时间:2017-05-23 20:55:55

标签: python csv parsing limit bigdata

我正在使用非常大的.csv文件,我正在尝试查找文件中的行数以及其他内容,例如解析为json等。

我的问题是如何克服csv库的限制,因为我经常收到以下错误。

我提供了一个我知道在python3中工作的示例程序,它将返回csv文件中的行数。

 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)

非常感谢任何有关此问题的工作。谢谢!

1 个答案:

答案 0 :(得分:1)

CSV通常是换行符分隔的,因此通过CSV解析器运行它只是为了计算行数,与仅计算行数相比可能效率低。

这样的事情要快得多。如有必要,您可以为标题减去一行。

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