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

Find number of rows in large .csv file using python

本问题已经有最佳答案,请猛点这里访问。

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

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

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

1
2
3
4
5
6
7
8
 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文件运行时,我继续收到此错误。

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

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


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

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

1
2
3
4
5
def row_count(input):
    with open(input) as f:
        for i, l in enumerate(f):
            pass
    return i