【问题标题】:Find number of rows in large .csv file using python [duplicate]使用python查找大型.csv文件中的行数[重复]
【发布时间】:2017-10-23 23:58:27
【问题描述】:

我正在处理非常大的 .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)

非常感谢任何解决此问题的方法。谢谢!

【问题讨论】:

  • @OluwafemiSule 这个问题是不同的。将 CSV 读入生成器将无济于事。您仍然需要耗尽发电机才能获得长度。
  • 我不知道如何回答我自己的问题,但我找到的解决方案是使用 pandas 打开文件并获取结果数据框的形状。

标签: python csv parsing limit bigdata


【解决方案1】:

CSV 通常以换行符分隔,因此与仅计算行数相比,仅通过 CSV 解析器运行它来计算行数可能效率低下。

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

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

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2017-02-25
    • 2017-04-20
    相关资源
    最近更新 更多