使用Python或php从大型CSV文件中计算唯一列值

时间:2016-04-26 06:10:18

标签: python parsing csv

我有一个217gb的Csv文件,如何在没有超时的情况下使用python或php脚本获取唯一列值的计数?

2 个答案:

答案 0 :(得分:1)

不确定超时是什么意思,对于像这样的大文件,它总是需要很长时间。

tokens = {}
with open("your.csv") as infile:
    for line in infile:
        columns = line.split(',')
        # Where idx is your desired column index
        if columns[idx] not in tokens:
            tokens[columns[idx]] = 0
        else:
            tokens[columns[idx]] += 1

print tokens

这会逐行加载文件,因此您的计算机不会因将整个217 Gb加载到ram而崩溃。您可以先尝试一下,看看字典是否适合您计算机的内存。否则,您可能会考虑以分而治之的方式将文件拆分为较小的块。

答案 1 :(得分:-1)

您可以尝试增加field_size_limit

import csv
csv.field_size_limit(1000000000)

r = csv.reader(open('doc.csv', 'rb'))

for row in r:
    print(row)  # do the processing